tag:blogger.com,1999:blog-35976877150959493182024-03-29T18:08:59.207+09:00Mobile Studyhanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.comBlogger1576125tag:blogger.com,1999:blog-3597687715095949318.post-21808737393734630792022-06-15T11:43:00.001+09:002022-06-15T11:43:56.864+09:00Playing in the (Windows) Sandbox<div dir="ltr"><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem">Introduction</h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Two years ago, Microsoft released a new feature as a part of the <span style="box-sizing:border-box;font-weight:bolder">Insiders build 18305</span> – <span style="box-sizing:border-box;font-weight:bolder">Windows Sandbox.</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">This sandbox has some useful specifications:</p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box">Integrated part of Windows 10 (Pro/Enterprise).</li><li style="box-sizing:border-box">Runs on top of Hyper-V virtualization.</li><li style="box-sizing:border-box">Pristine and disposable – Starts clean on each run and has no persistent state.</li><li style="box-sizing:border-box">Configurable through a configuration file that has a dedicated format (WSB format). You can configure networking, vGPU, mapped folders, an automated script to run at user login, and many other options.</li><li style="box-sizing:border-box">The deployment is based on Windows Containers technology.</li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Judging by the accompanying <a href="https://techcommunity.microsoft.com/t5/windows-kernel-internals/windows-sandbox/ba-p/301849" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">technical blog post</a>, we can say that Microsoft achieved a major technical milestone. The resulting sandbox presents the best of both worlds: on the one hand, the sandbox is based on Hyper-V technology, which means it inherits Hyper-V's strict virtualization security. On the other hand, the sandbox contains several features which allow sharing resources with the host machine to reduce CPU and memory consumption.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">One of the interesting features is of particular importance, and we will elaborate on it here.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Dynamically Generated Image</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The guest disk and filesystem are created dynamically, and are implemented using files in the host filesystem.</p><img width="1024" height="251" class="gmail-wp-image-24799 gmail-aligncenter" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure1-1024x251.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; clear: both; display: table; margin: 5px auto; border-radius: inherit;"><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 1</span> – Dynamically generated image (from Microsoft official documentation).</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We decided to dig deeper into this technology for several reasons.</p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box"><span style="box-sizing:border-box;font-weight:bolder">Lack of documentation</span> on its internal technicalities, both official and community-based. While it combines two widely documented technologies (Windows Containers and Hyper-V), we are still missing on how it all works together. For example, the technical blog refers to the <a href="https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">Windows Containers</a> technology, but in the official documentation, the creation and management of Windows Containers is done using the <em style="box-sizing:border-box">Docker </em>utility for Windows, which isn't used in Windows Sandbox.</li><li style="box-sizing:border-box">Unfortunately, Microsoft does not allow any customization to the sandbox other than tweaking the WSB file. This means we can't install any program that requires a reboot, or create our own base image for the sandbox.</li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">In this article, we break down several of the components, execution flow, driver support, and the implementation design of the dynamic image feature. We show that several internal technologies are involved, such as NTFS custom reparse tag, VHDx layering, container configuration for proper isolation, virtual storage drivers, vSMB over VMBus, and more. We also create a custom <a href="https://github.com/fireeye/flare-vm" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">FLARE VM</a> sandbox for malware analysis purposes, whose startup time is just 10 seconds.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">General Components</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The complex ecosystem of Hyper-V and its modules has already been researched extensively. Several vulnerabilities were found, such as the <a href="https://www.youtube.com/watch?v=025r8_TrV8I" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">next</a> <em style="box-sizing:border-box">VmSwitch </em>RCE which can cause a full guest-to-host escape. A few years ago, Microsoft introduced Windows Containers (mainly for servers), a feature which allowed running Docker natively on Windows to ease software deployment.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Both these technologies were also introduced to the Windows 10 endpoint platform in the form of two components: <span style="box-sizing:border-box;font-weight:bolder"><em style="box-sizing:border-box">WDAG</em></span> (Windows Defender Application Guard), and most recently, <span style="box-sizing:border-box;font-weight:bolder">Windows Sandbox</span>. Lately, WDAG and another exciting feature for Office isolation were combined as <a href="https://docs.microsoft.com/en-us/windows/security/threat-protection/microsoft-defender-application-guard/md-app-guard-overview" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">MDAG – Microsoft Defender Application Guard</a>. </p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">In the <em style="box-sizing:border-box">POC2018 </em>conference, <a href="https://twitter.com/_f0rgetting_" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">Yunhai Zhang</a> had a <a href="https://www.powerofcommunity.net/poc2018/yunhai.pdf" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">presentation</a> where he dived into the WDAG architecture and internals. As we demonstrate, Windows Sandbox shares the same technologies for its underlying implementation.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The sandbox can be divided into three components: two services – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">CmService.dll</code> and <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute.exe</code> – and the created worker process, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmwp.exe</code>.</p><img class="gmail-aligncenter gmail-wp-image-24858 gmail-size-full" src="https://research.checkpoint.com/wp-content/uploads/2021/03/sandboxschema.png" alt="" width="802" height="776" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; clear: both; display: table; margin: 5px auto; border-radius: inherit;"><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 2</span> – Windows Sandbox general components.</p><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem"><span style="box-sizing:border-box;font-weight:bolder">Preparing the Sandbox</span></h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Behind every Hyper-V based VM there is a <em style="box-sizing:border-box">VHDx</em> file, a virtual disk which is used by the machine. To understand how the disk is created, we looked at the working folder of an actively running sandbox: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">%PROGRAMDATA%\Microsoft\Windows\Containers</code>. Surprisingly, we found more than 8 VHDx files.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="331" height="216" class="gmail-wp-image-24801" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure3.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 3</span> – Working folder structure.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We can track the main VHDx file by its dynamic size at the next path – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">Sandboxes\29af2772-55f9-4540-970f-9a7a9a6387e4\sandbox.vhdx</code>, where the GUID is randomly generated on each sandbox run.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">When we manually mount the VHDx file, we see that most of its filesystem is missing (this phenomenon is also visible in Zhang's WDAG research, mentioned previously).</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="636" height="363" class="gmail-wp-image-24802" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure4.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 4</span> – Mounted sandbox VHDx.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We can immediately observe the "<em style="box-sizing:border-box">X</em>" sign on the folder icon. If we turn on the "attributes" column in File Explorer, we can see two unusual NTFS attributes. These are explained <a href="https://www.urtech.ca/2017/11/solved-all-ntfs-attributes-defined/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">here</a>:</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">O – Offline</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">L – Reparse Point</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">Reparse Point</a> is an extension to NTFS which allows it to create a "link" to another path. It also plays a role in other features, such as volume mounting. In our case, it makes sense that this feature is used as most of the files aren't "physically" present in the VHDx file.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">To understand where the reparse points to and what's there, we delve deeper into the NTFS structure.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">Parsing MFT Record</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The <em style="box-sizing:border-box">Master File Table</em> (MFT) stores the information required to retrieve files from an NTFS partition. A file may have one or more MFT records, and can contain one or more attributes. We can run the popular forensic tool, <em style="box-sizing:border-box">Volatility</em>, with the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">mftparser</code> option to parse all MFT records in the underlying file system. This can be done using the following command line:</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">volatility.exe -f sandbox.vhdx mftparser --output=body -D output --output-file=sandbox.body</code></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">When we search the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">kernel32.dll</code> (a sample system file) record in the output, we encounter the following text:</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0|</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">MFT FILE_NAME</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> Windows\System32\kernel32.</span><span class="enlighter-m3" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,134,179)">dll</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">Offset: </span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x3538c00</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1251</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|---a---S--o----|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">0</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">0</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">764456</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1604310972</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1596874670</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1603021550</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1596874670</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">0</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">MFT STD_INFO</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> Windows\System32\kernel32.</span><span class="enlighter-m3" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,134,179)">dll</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">Offset: </span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x3538c00</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1251</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|---a---Sr-o----|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">0</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">0</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">764456</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1606900209</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1596874670</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1603021550</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">|</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1596874670</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We can see similar reparse ("<em style="box-sizing:border-box">S</em>") and offline ("<em style="box-sizing:border-box">o</em>") attributes as we did earlier, but Volatility doesn't give us any additional information. We can use the offset of the MFT record, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0x3538c00</code>, to launch our own manual parse.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We used the <a href="https://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">next NTFS documentation</a> for the parsing process. We do not provide a full specification of the MFT format, but to put it simply, MFT records contain a variable number of attributes, and each one has its own header and a payload. We are looking for the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">$REPARSE_POINT</code> attribute, which is identified by the ordinal <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0xC0</code>.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="581" height="308" class="gmail-wp-image-24803" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure5.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 5</span> – MFT attribute header structure.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="606" height="192" class="gmail-wp-image-24804" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure6.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 6</span> – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">$REPARSE_POINT</code> attribute payload structure.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Our parsing effort with the structures listed above yields the following data:</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">$REPARSE_POINT Attribute</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">--------------- Attribute Header --------------- </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">C0 </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - </span><span class="enlighter-m0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,134,179)">Type</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">$REPARSE_POINT</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">78</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Length</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Non-resident flag</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Name length</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Offset to the name</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Flags</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">03</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Attribute </span><span class="enlighter-m0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,134,179)">Id</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">a</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">5C </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Length </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">of</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> the attribute</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">18</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Offset to the attribute</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Indexed flag</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Padding</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">---------------- Attribute Data ---------------- </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">18</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">10</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">90</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Reparse tag</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">54</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Reparse data length</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Padding</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">----------------- Reparse Data ----------------- </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">01</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Version ?</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Reserved ?</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">77</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> F6 </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">64</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">82</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> B0 </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">40</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> A5 4C BF 9A </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">94</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 4A C2 DA </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">80</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">87</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Referenced GUID </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">3A </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Path string size</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">57</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">69</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6E </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">64</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6F </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">77</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">73</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 5C </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">53</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">79</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">73</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">74</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">65</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6D </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">33</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">32</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">5C </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6B </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">65</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">72</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6E </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">65</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6C </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">33</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">32</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 2E </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">64</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6C </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 6C </span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> - Path string</span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">A few important notes:</p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box">We didn't find any public documentation for Microsoft's reparse data structure, but it wasn't too difficult to reverse-engineer.</li><li style="box-sizing:border-box">The reparse tag <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">0x90001018</code> is defined <a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c8e77b37-3909-4fe6-a4ea-2b9d423b1ee4" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">here</a> as <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">IO_REPARSE_TAG_WCI_1</code> with the next description:</li></ul><div class="gmail-table-responsive-lg" style="box-sizing:border-box"><table class="gmail-table-striped" style="border-collapse:collapse;width:1012px"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box;background-color:rgba(0,0,0,0.05)"><td style="box-sizing:border-box">"Used by the Windows Container Isolation filter. Server-side interpretation only, not meaningful over the wire."</td></tr></tbody></table></div><ul id="gmail-block-5bdddda9-6d2e-400f-9159-85e885c8d116" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box">While reverse-engineering Windows modules in this research, several times we came across the referenced GUID <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">77 F6 64 82 B0 40 A5 4C BF 9A 94 4A C2 DA 80 87</code> as a hardcoded value. This value indicates a reference to the host base layer, which we talk about it later.</li><li style="box-sizing:border-box">The path in the reparse data shows the relative path of our sample file: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">Windows\System32\kernel32.dll</code></li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Based on the above information, we can conclude that files are "linked" by the underlying file system (probably to a designated FS filter), but many questions are still unanswered: how is the VHDx constructed, what is the purpose of other VHDx's, and what component is responsible for linking to the host files.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">VHDx Layering</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">If we track <em style="box-sizing:border-box">Procmon </em>logs during the sandbox creation, we notice a series of VHDx access attempts:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="912" height="182" class="gmail-wp-image-24805" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure7.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 7 –</span> VHDx layering lead.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">While the first one is the "real" VHDx which we parsed previously, it is followed by 3 other VHDx accesses. We suspect that Microsoft used some sort of layering for the virtual disk templates.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Our theory is easily verified by inspecting the VHDx files using the binary editor:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="621" height="435" class="gmail-wp-image-24806" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure8.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 8</span> – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">parent_linkage</code> tag in 010 Editor.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The parent locator in VHDx format can be given using multiple methods: absolute path, relative path, and volume path. The documentation can be found <a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-vhdx/b6332a98-624d-46b8-bd0e-b77b573662f9" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">here</a>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">With that knowledge, we can build the next layering:</p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box"><code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">Sandboxes\<new_sandbox_guid>\sandbox.vhdx</code> – The "real" VHDx.</li><li style="box-sizing:border-box"><code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">Sandboxes\<constant_guid_per_installation>\sandbox.vhdx</code> – Created once per sandbox install.</li><li style="box-sizing:border-box"><code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\Snapshot\SnapshotSandbox.vhdx</code> – Probably relevant to the base layer snapshot.</li><li style="box-sizing:border-box"><code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">PortableBaseLayer\SystemTemplateBase.vhdx</code> – Base template.</li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">When we browse these virtual disks, we notice files are still missing; some system folders are empty, as well as folders for Users/Program Files and various other files.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Playing with Procmon leads us to understand that another important layer is missing: the OS base layer.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">OS Base Layer</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The OS base layer main file exists in the sandbox working folder in the next path: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\BaseLayer.vhdx</code>. By looking at the installation process through Procmon, we can see that the next <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">.wim</code> (Windows Imaging Format) file, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">C:\Windows\Containers\serviced\WindowsDefenderApplicationGuard.wim</code>, is extracted into the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">PortableBaseLayer</code> folder by the same name, and is copied and renamed into the base layer file above. This shows yet another similarity between WDAG and Windows Sandbox.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">When we browsed the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">BaseLayer.vhdx</code> disk, we could see the complete structure of the created sandbox, but system files were still "physically" missing. Parsing the MFT record for <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">kernel32.dll</code> like we did previously results in the same <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">$REPARSE_POINT</code> attribute but with a different tag: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0xA0001027</code>: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">IO_REPARSE_TAG_WCI_LINK_1</code>. Remember this tag for later.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="618" height="170" class="gmail-wp-image-24807" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure9.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 9</span> – Base layer user folders.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">In addition, when we run <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">mountvol</code> command, we see that the base layer VHDx is mounted to the same directory where it exists:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="877" height="108" class="gmail-wp-image-24808" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure10.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 10</span> – Mounted OS base layer.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The service in charge of mounting that volume, and all previous functionality we mentioned up to this point, is the <em style="box-sizing:border-box">Container Manager Service</em> <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">CmService.dll</code>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">This service runs an executable named <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">cmimageworker.exe</code>, with one of the next command line parameters, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">expandpbl/deploy/clean</code>, to perform these actions.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="1024" height="384" class="gmail-wp-image-24809" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure11-1024x384.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 11</span> – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">CmService</code> base layer creation.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We can observe the call to <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">computestorage!HcsSetupBaseOSLayer</code> in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">cmimageworker.exe</code>, and part of the actual creation of the base layer in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">computestorage.dll</code>.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="720" height="224" class="gmail-wp-image-24810" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure12.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 12</span> – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">cmimageworker!Container::Manager::Hcs::ProcessImage</code> initiates base layer creation.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="680" height="149" class="gmail-wp-image-24811" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure13.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 13</span> – Part of the base layer creation in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">computestorage!OsImageUtilities::ProcessOsLayer</code>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Microsoft issued the following statement regarding the sandbox:</p><div class="gmail-table-responsive-lg" style="box-sizing:border-box"><table class="gmail-table-striped" style="border-collapse:collapse;width:1012px"><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box;background-color:rgba(0,0,0,0.05)"><td style="box-sizing:border-box"><span style="box-sizing:border-box;font-weight:bolder">Part of Windows</span> – everything required for this feature ships with Windows 10 Pro and Enterprise. No need to download a VHD!</td></tr></tbody></table></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">So far, we understand crucial implementation details regarding that feature. Let's continue to see how the container is executed.</p><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem"><span style="box-sizing:border-box;font-weight:bolder">Running the Sandbox</span></h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Running the Windows Sandbox application triggers an execution flow which we won't elaborate on here. We just mention that the flow leads to <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">CmService</code> executing <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute!HcsRpc_CreateSystem</code> through an RPC call. Another crucial service, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute.exe</code>, runs and orchestrates all compute systems (containers) on the host.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">In our case, the <em style="box-sizing:border-box">CreateSystem </em>command also receives the next configuration JSON which describes the desired machine:</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Note</span> – The JSON is cut for readability. You can access the full JSON in <span style="box-sizing:border-box;font-weight:bolder">Appendix A</span>.</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Owner"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Madrid"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VirtualMachine"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Devices"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Scsi"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"primary"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Attachments"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"0"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Type"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VirtualDisk"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Path"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\Sandboxes\\025b00c8-849a-4e00-bcb2-c2b8ec698bab\\sandbox.vhdx"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VirtualSmb"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Shares"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Name"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"os"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Path"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\BaseImages\\0949cec7-8165-4167-8c7d-67cf14eeede0\\BaseLayer\\Files"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">` </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"RunInSilo"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SiloBaseOsPath"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\BaseImages\\0949cec7-8165-4167-8c7d-67cf14eeede0\\BaseLayer\\Files"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"NotifySiloJobCreated"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"FileSystemLayers"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Id"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"8264f677-40b0-4ca5-bf9a-944ac2da8087"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Path"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"PathType"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AbsolutePath"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ...</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">This JSON is created at <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">CmService!Container::Manager::Hcs::Details::GenerateCreateComputeSystemJson</code>. We didn't manage to track any file which helps build that configuration.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Before we start analyzing the interesting fields in the JSON, we want to mention this <a href="https://unit42.paloaltonetworks.com/what-i-learned-from-reverse-engineering-windows-containers/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">article</a> by Palo Alto Networks. The article explains the container internals, and how <span style="box-sizing:border-box;font-weight:bolder"><em style="box-sizing:border-box">Job</em></span> and <span style="box-sizing:border-box;font-weight:bolder"><em style="box-sizing:border-box">Silo</em></span> objects are related.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The first interesting configuration tag is <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">RunInSilo</code>. This tag triggers a code flow in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute</code> which leads us to the next stack trace:</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">3: kd</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">></span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> k</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-c0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(153,153,170)"> # Child-SP RetAddr Call Site</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ffff9a00`8da57648 fffff806`85d2b7fb wcifs!WcPortMessage</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">01</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ffff9a00`8da57650 fffff806`85d63499 FLTMGR!FltpFilterMessage+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0xdb</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0b 0000004d`4218dbf0 00007ffa`08c5363d FLTLIB!FilterSendMessage+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x31</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0c 0000004d`4218dc40 00007ffa`08c48686 wc_storage!WciSetupFilter+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x195</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0d 0000004d`4218dcf0 00007ffa`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">22e06496</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> wc_storage!WcAttachFilterEx+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x156</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0e 0000004d`4218dee0 00007ffa`22de5a66 container!container::FilesystemProvider::Setup+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x15e</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0f 0000004d`4218dfc0 00007ffa`22ded4ad container!container_runtime::CreateContainerObject+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x106</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">10</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4218e010</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 00007ffa`22decf3c container!container::CreateContainer+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x10d</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">11</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4218e4</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">a0 00007ff6`fcf0bc7f container!WcCreateContainer+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x1c</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">12</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4218e4</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">d0 00007ff6`fcf0c5c4 vmcompute!ComputeService::JobUtilities::ConvertJobObjectToContainer+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0xcb</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">13</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4218e590</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 00007ff6`fce8573f vmcompute!ComputeService::JobUtilities::CreateSiloForIsolatedWorkerProcess+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x4dc</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">14</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4218e8</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">c0 00007ff6`fce875c5 vmcompute!ComputeService::Management::Details::PrepareJobForWorkerProcess+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x17b</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">15</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4218e9</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">a0 00007ff6`fcee6cbb vmcompute!ComputeService::Management::Details::ConstructVmWorker+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0xfd5</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">From the stack, we can understand that whenever the compute system receives the silo configuration, it creates and configures a container through a <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">container!WcCreateContainer</code> call. As part of its configuration, it also communicates with the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">wcifs.sys</code> driver through <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">FLTLIB!FilterSendMessage</code>. We explain this driver and its purpose shortly.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The second interesting feature is the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">VirtualSmb</code> tag for creating the respective shares for the mounted base layer path we mentioned previously. We'll get back to this shortly as well.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">Container Isolation</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">As we can see in the stack trace, the container creation includes opening the filter communication channel on port <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\WcifsPort</code> with the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">wcifs.sys</code> driver, <em style="box-sizing:border-box">Windows Container Isolation FS Filter Driver</em>. This is a <a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/communication-between-user-mode-and-kernel-mode" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">common method</a> for a user mode code to communicate with filter drivers. </p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">This mini-filter driver has an important part in the implementation of the container filesystem virtualization. This driver fills this role in <span style="box-sizing:border-box;font-weight:bolder">both the guest and the host</span>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">File system filter drivers are usually quite complex, and this one isn't an exception. Luckily, <a href="https://twitter.com/tiraniddo" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">James Forshaw</a> of Google Project Zero recently wrote a <a href="https://googleprojectzero.blogspot.com/2021/01/hunting-for-bugs-in-windows-mini-filter.html" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">great article</a> which explains the low-level design of Windows FS filter drivers, which helps us understand the logic in our case.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We can divide the driver logic into 2 parts:</p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box">Driver configuration – The configuration depends on whether the driver runs on the guest or on the host system.</li><li style="box-sizing:border-box">Handling the operation callbacks, such as <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">WcPreCreate</code>, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">WcPostCreate</code>, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">WcPreRead</code>, and <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">WcPostRead</code>. These callbacks contain the main logic, data manipulation and proper redirections.</li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We'll explain some of the methods this driver uses to understand the ecosystem of the sandbox.</p><h3 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:1.75rem"><span style="box-sizing:border-box;font-weight:bolder">Initial Configuration</span></h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Guest Configuration</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">As we said previously, both the host, and the guest use this driver but in different ways.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The guest receives a set of parameters via the registry for its initial configuration. Some of these params are at <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">HKLM\SYSTEM\CurrentControlSet\Control</code> and <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">HKLM\SYSTEM\CurrentControlSet\Control\BootContainer</code> as we can see below:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="871" height="122" class="gmail-wp-image-24812" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure14.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 14</span> – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">HKLM\SYSTEM\CurrentControlSet\Control</code> config values.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="590" height="66" class="gmail-wp-image-24813" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure15.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 15</span> – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">HKLM\SYSTEM\CurrentControlSet\Control\BootContainer</code> config values.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">You might notice the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">IO_REPARSE_TAG_WCI_1</code> (code <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0x90001018</code>), which we saw earlier in the "real" VHDx file. This tag, together with <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">IO_REPARSE_TAG_WCI_LINK_1</code>, which we saw as a reparse tag in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">BaseLayer.vhdx</code>, are hardcoded into the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">wcifs!WcSetBootConfiguration</code> method:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="679" height="216" class="gmail-wp-image-24814" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure16.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 16</span> – Hardcoded reparse tag values in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">WcSetBootConfiguration</code>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The second, more important part of the guest configuration is in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">wcifs!WcSetupVsmbUnionContext</code>, where it sets up a virtualized layer known as a <em style="box-sizing:border-box"><span style="box-sizing:border-box;font-weight:bolder">Union Context</span></em>. Behind the scenes, the driver stores customized data on several context objects and accesses them with the proper NT API – <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">FltGetInstanceContext</code>, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">PsGetSiloContext</code>, and <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">FltGetFileContext</code>. These custom objects contain AVL trees and hash tables to efficiently look up the virtualized layers.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">WcSetupVsmbUnionContext</code> method has two more interesting artifacts. One is a vSMB path which is part of the layer, and another is the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">HOST_LAYER_ID</code> GUID which we saw previously in the parsed MFT and in the JSON that describes the virtual machine:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="1024" height="54" class="gmail-wp-image-24815" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure17-1024x54.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 17</span> – Hardcoded vSMB path in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">WcSetupVsmbUnionContext</code>.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="765" height="54" class="gmail-wp-image-24816" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure18.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 18</span> – Hardcoded GUID for <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">HOST_LAYER_ID</code>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">As we delve deeper, we see signs that a <span style="box-sizing:border-box;font-weight:bolder"><em style="box-sizing:border-box">Virtual SMB</em></span> method is used to share files between the guest and the host. Soon we'll see that vSMB is the <span style="box-sizing:border-box;font-weight:bolder">main method</span> for the base layer implementation and mapped folder sharing.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Host Configuration</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">For the host system, the main configuration happens when the parent compute process, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute</code>, initiates the container creation, and sends a custom message to <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\WcifsPort</code>. This triggers <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">wcifs!WcPortMessage</code> which is a callback routine for any message sent to that specific port.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Below is a partial reconstruction of the message sent by the service to the filter driver:</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-k2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(68,85,136);font-weight:700">struct</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> WcifsPortMsg</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD MsgCode;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD MsgSize;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> WcifsPortMsgSetUnion Msg;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-k2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(68,85,136);font-weight:700">struct</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> WcifsPortMsgSetUnion</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD MsgVersionOrCode;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD MsgSize;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD NumUnions;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> wchar_t InstanceName</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">50</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD InstanceNameLen;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD ReparseTag;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD ReparseTagLink;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> DWORD NotSure;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> HANDLE Job;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> BYTE ContextData</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">1</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">;</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">;</span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">ContextData</code> field also contains the device paths the union should map.</p><h3 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:1.75rem"><span style="box-sizing:border-box;font-weight:bolder">Operation Callbacks</span></h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">During the registration, the filter driver supplies a set of callbacks for each operation it wants to intercept. The filter manager invokes these callbacks pre/post each file operation, as we can see below.</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="820" height="507" class="gmail-wp-image-24817" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure19.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 19 –</span> Mini-filter architecture, courtesy of <a href="https://twitter.com/tiraniddo" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">James Forshaw</a>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Without diving too much into the technical details, the driver defines and takes care of two custom reparse tags:</p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box"><span style="box-sizing:border-box;font-weight:bolder">IO_REPARSE_TAG_WCI_1 </span>– This is the main tag that indicates the file instance on the disk is virtual, and the real path can be found in its internal structures. Example uses of this "conversion":<br style="box-sizing:border-box"><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:0px"><li style="box-sizing:border-box">The guest converts files from its native path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\Windows\system32\kernel32.dll</code> to vSMB path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">\Device\vmsmb\VSMB-{dcc079ae-60ba-4d07-847c-3493609c0870}\os\Windows\System32\kernel32.dll</code>.</li><li style="box-sizing:border-box">The host converts files from the base layer device path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\ProgramData\Microsoft\Windows\Containers\BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\BaseLayer\Files\Windows\System32\en-US\apphelp.dll.mui</code> to the real path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\Windows\System32\en-US\apphelp.dll.mui</code>.<br style="box-sizing:border-box">This conversion is quite interesting, as it happens mainly in empty system folders in the base layer which contain this reparse tag (like the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">en-US</code> folder).</li></ul></li><li style="box-sizing:border-box"><span style="box-sizing:border-box;font-weight:bolder">IO_REPARSE_TAG_WCI_LINK_1 </span>– This tag is used only on the host as far as we could tell, and links the system files from the base layer device path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\ProgramData\Microsoft\Windows\Containers\BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\BaseLayer\Files\Windows\System32\kernel32.dll</code> to the real path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\Windows\System32\kernel32.dll</code>. Compared to the previous point, this example DLL file entry does exist in the base layer, and has this reparse tag.</li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The discovery that vSMB is the primary method for the OS base layer sharing was quite surprising. Now that we know it is a crucial communication method in the ecosystem the natural next step is to dig further inside.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">(v)SMB File Sharing</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">During the sandbox installation, we noticed <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute</code> creates several virtual shares by invoking <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">CreateFileW</code> to the storage provider device, and sends IOCTL <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0x240328</code>. A sample path for such an invoke might look like this: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\??\STORVSP\VSMB\??\C:\ProgramData\Microsoft\Windows\Containers\BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\BaseLayer\Files</code>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The method that creates these shares is <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmcompute!ComputeService::Storage::OpenVsmbRootShare</code>. We can see its flow in the next stack trace:</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">3: kd</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">></span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> k</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-c0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(153,153,170)"> # Child-SP RetAddr Call Site</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">00</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ffff9a00`8d48a178 fffff806`85fd6af8 storvsp!VspFileCreate</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-m0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,134,179)">01</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">Inline </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">Function</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> --------`-------- Wdf01000!FxFileObjectFileCreate::Invoke+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x29</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">minkernel\wdf\framework\shared\inc\private\common\FxFileObjectCallbacks.</span><span class="enlighter-m3" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,134,179)">hpp</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> @ </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">58</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">11</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`4210d690 00007ff6`fcf33700 KERNELBASE!CreateFileW+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x66</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">12</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`4210d6f0 00007ff6`fceb8180 vmcompute!ComputeService::Storage::OpenVsmbRootShare+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x3ac</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">13</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`4210d850 00007ff6`fceba0fc vmcompute!ComputeService::VirtualMachine::Details::ConfigureVSMB+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x598</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">14</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`4210da30 00007ff6`fceba908 vmcompute!ComputeService::VirtualMachine::Details::InitializeDeviceSettings+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x918</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">15</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`4210eb90 00007ff6`fce86abd vmcompute!ComputeService::VirtualMachine::CreateVirtualMachineConfiguration+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x68</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">16</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 0000004d`4210ebe0 00007ff6`fcee6cbb vmcompute!ComputeService::Management::Details::ConstructVmWorker+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x4cd</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">In addition, when we map host folders to the guest using the WSB file configuration, the same method is called. For example, mapping the <em style="box-sizing:border-box">Sysinternals </em>folder results in the next call to the driver: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\??\STORVSP\VSMB\??\C:\Users\hyperv-root\Desktop\SysinternalsSuite</code>.</p><h3 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:1.75rem"><span style="box-sizing:border-box;font-weight:bolder">Accessing Files via (v)SMB</span></h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">After creating these shares, we can access them within the guest through the created alias. We can use the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">type</code> command to print the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">kernel32.dll</code> of the host with the next path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\\.\vmsmb\VSMB-{dcc079ae-60ba-4d07-847c-3493609c0870}\os\Windows\System32\kernel32.dll</code>:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="1024" height="337" class="gmail-wp-image-24818" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure20-1024x337.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 20</span> – Accessing the vSMB share.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">To serve the vSMB files, the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmusrv</code> module, which is part of the VM worker process, creates a worker thread. This module is a user mode vSMB server which requests packets directly from the VMBus at the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmusrv!VSmbpWorkerRecvLoop</code> routine, and then proceeds to process the packets.</p><h3 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:1.75rem"><span style="box-sizing:border-box;font-weight:bolder">Serving Create File Operation</span></h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Whenever <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmusrv</code> receives a <em style="box-sizing:border-box">Create </em>SMB request, it initiates a new request to the storage provider driver. Such a call might look like this:</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">2: kd</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">></span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> k</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-c0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(153,153,170)"> # Child-SP RetAddr Call Site</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0c ffff9a00`8d9522e0 fffff806`892c4741 storvsp!VspVsmbCommonRelativeCreate+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x369</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0d ffff9a00`8d952510 fffff806`892c3b7e storvsp!VspVsmbHandleRelativeCreateFileRequest+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x321</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0e ffff9a00`8d952790 fffff806`892c0f85 storvsp!VspVsmbDispatchIoControlForProcess+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x11e</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">0f ffff9a00`8d9527e0 fffff806`</span><span class="enlighter-n0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">8100e522</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> storvsp!VspFastIoDeviceControl+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x175</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">13</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff298 00007ffa`110c0c0a ntdll!NtDeviceIoControlFile+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x14</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">14</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff2a0 00007ffa`110c0456 vmusrv!CShare::OpenFileRelativeToShareRootInternal+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x306</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">15</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff3e0 00007ffa`110b9381 vmusrv!CShare::OpenFileRelativeToShareRoot+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x356</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">16</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff510 00007ffa`110b4451 vmusrv!CFSObject::CreateFileW+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x185</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">17</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff690 00007ffa`1109a568 vmusrv!CShare::Create+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x91</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">18</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff740 00007ffa`1109d74d vmusrv!ProviderCallback_Create+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x30</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">19</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> 000000ae`9c0ff780 00007ffa`1109c299 vmusrv!SrvCreateFile+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x331</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">1a 000000ae`9c0ff860 00007ffa`1109c6f0 vmusrv!Smb2ExecuteCreateReal+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x111</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">1b 000000ae`9c0ff940 00007ffa`110a08da vmusrv!Smb2ExecuteCreate+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x30</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">1c 000000ae`9c0ff970 00007ffa`</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">11098907</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> vmusrv!Smb2ExecuteProviderCallback+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x7e</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">1d 000000ae`9c0ff9d0 00007ffa`</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">11088311</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> vmusrv!Smb2PacketProcessing+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x97</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">1e 000000ae`9c0ffa40 00007ffa`</span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">11087225</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> vmusrv!Smb2PacketProcessingCallback+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x11</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span></div></div></div></div><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The communication with the storage provider is done through an IOCTL with the code <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0x240320</code>, while the referenced handle is the vSMB path opened on the initialization phase:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="1024" height="216" class="gmail-wp-image-24819" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure21-1024x216.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 21</span> – The handle in which the IOCTL is referred.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">If we look closely at <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">storvsp!VspVsmbCommonRelativeCreate</code>, we see that every execution is followed by a call to <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">nt!IoCreateFileEx</code>. This call contains the relative path of the desired file with an additional <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">RootDirectory</code> field which represents the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\Files</code> folder in the mounted base layer VHDx:</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="1017" height="521" class="gmail-wp-image-24820" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure22.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 22</span> – Execution of <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">IoCrateFileEx</code> by <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">storvsp.sys</code>.</p><h3 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:1.75rem"><span style="box-sizing:border-box;font-weight:bolder">Serving Read/Write Operation</span></h3><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Read/Write operations are executed by the worker thread in <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmusrv!CFSObject::Read/vmusrv!CFSObject::Write</code>. If the file is small enough, the thread simply executes <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">ReadFile/WriteFile</code> on the handle. Otherwise it maps the file to the memory, and transfers it efficiently through<a href="https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v-virtual-switch/rdma-and-switch-embedded-teaming" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent"> RDMA</a> on top of VMBus. This transfer is executed at <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">vmusrv!SrvConnectionExecuteRdmaTransfer</code>, while the RDMA communication is done with the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">RootVMBus</code> device (host VMBus device name) using IOCTL <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0x3EC0D3</code> or <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">0x3EC08C</code>.</p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">2: kd</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">></span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> k</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">06</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ffffad0e`3bee7650 fffff800`36225b62 vmbusr!RootIoctlRdmaFileIoHandleMappingComplete+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x10f</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n4" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">07</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ffffad0e`3bee7690 fffff800`361fee21 vmbusr!RootIoctlRdmaFileIo+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0xf2</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">08</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> ffffad0e`3bee76f0 fffff800`339da977 vmbusr!RootIoctlDeviceControlPreprocess+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x191</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">12</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27f7e8 00007ffe`281ce773 ntdll!NtDeviceIoControlFile+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x14</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">13</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27f7f0 00007ffe`281dcbd2 vmusrv!SrvConnectionExecuteRdmaTransfer+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x24f</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">14</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27f940 00007ffe`281d4874 vmusrv!CFile::ReadFileRdma+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0xc2</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">15</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27f9c0 00007ffe`281c218e vmusrv!CFSObject::Read+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x94</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">16</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27fa00 00007ffe`281c08da vmusrv!Smb2ExecuteRead+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x1be</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">17</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27fa60 00007ffe`281b8907 vmusrv!Smb2ExecuteProviderCallback+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x7e</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">18</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27fac0 00007ffe`281a6a4e vmusrv!Smb2PacketProcessing+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0x97</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">19</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">00000009</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">`ae27fb30 00007ffe`3bba6fd4 vmusrv!SmbWorkerThread+</span><span class="enlighter-n2" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153);font-style:italic">0xce</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:0px 0px 8px 8px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">... </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">(</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">REDUCTED</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">)</span></div></div></div></div><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="766" height="256" class="gmail-wp-image-24821" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure23.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 23</span> – Communication with <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\Device\RootVmBus\rdma\494</code> for the read/write operation.</p><h2 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2rem"><span style="box-sizing:border-box;font-weight:bolder">Guest-to-Host Flow</span></h2><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">Based on a few insights from this <a href="https://www.linkedin.com/pulse/hyper-v-architecture-internals-pravin-gawale/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">article</a> explaining the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">Storvsc.sys/Storvsp.sys</code> relationship, we can combine all previous technical blocks to the next file access flow. </p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="970" height="750" class="gmail-wp-image-24822" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure24_fixed.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 24</span> – File access flow.</p><ol style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box">We use the command <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">type</code> to open and print the content of the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">kernel32.dll</code> file. This is a system file, and therefore the sandbox doesn't own its copy, but uses the host's copy.</li><li style="box-sizing:border-box">The guest is not aware that the file doesn't exist, so it performs a normal file access through the filesystem driver stack up to the storage driver stack.</li><li style="box-sizing:border-box">The Hyper-V storage consumer <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">Storvsc.sys</code> is a miniport driver, meaning it acts as the virtual storage for the guest. It receives and forwards SCSI requests over the VMBus.</li><li style="box-sizing:border-box">The storage provider <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">Storvsp.sys</code> has a worker thread listening for new messages over the VMBus at <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">storvsp!VspPvtKmclProcessingComplete</code>.</li><li style="box-sizing:border-box">The provider parses the VMBus request, and passes it to <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">vhdparser!NVhdParserExecuteScsiRequestDisk</code>, which executes <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">vhdmp.sys</code>, the VHD parser driver.</li><li style="box-sizing:border-box">Eventually, <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">vhdmp.sys</code> accesses the physical instance of <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">sandbox.vhdx</code> through the filter manager, and performs read/write operation. In this case, it reads the data requested by the guest filesystem filter manager. That data is returned to the filter manager for further analysis.</li><li style="box-sizing:border-box">As explained previously, the returned entry is tagged with a WCI reparse tag and with the host layer GUID. When <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">wcifs.sys</code> executes its post-create operation on the file, it looks for the union context for that device, and replaces the file object with the next one: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">\Device\vmsmb\VSMB-{dcc079ae-60ba-4d07-847c-3493609c0870}\os\Windows\System32\kernel32.dll</code></li><li style="box-sizing:border-box">The <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">\Device\vmsmb</code> device was created as an SMB share, so the filter manager accesses it like any other normal share. Behind the scenes, it performs SMB requests over VMBus to the host.</li><li style="box-sizing:border-box">The vSMB user-mode server <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">vmusrv.dll</code> polls the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">\\.\VMbus\</code> device for new messages in its worker thread method <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">vmusrv!SmbWorkerThread</code>.</li><li style="box-sizing:border-box">As we showed previously, in a create operation, the server communicates with the storage provider through IOCTL on the handle of mounted OS base layer: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">\Device\STORVSP\VSMB\??\C:\ProgramData\Microsoft\Windows\Containers\BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\BaseLayer\Files</code></li><li style="box-sizing:border-box">The storage provider executes the file request through <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">IoCreateFileEx</code>. That request is relative, and contains the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">RootDirectory</code> of the mounted OS layer. This triggers the filter manager to open the file in the mounted OS layer.</li><li style="box-sizing:border-box">Similar to step <span style="box-sizing:border-box;font-weight:bolder">(7)</span>, the returned entry contains a WCI reparse tag, which causes <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">wcifs.sys</code> to change the file object in the post-create method. It changes the file object to its physical path: <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\Windows\System32\kernel32.dll</code></li><li style="box-sizing:border-box">Access the host <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">kernel32.dll</code> file, and return back to the guest.</li><li style="box-sizing:border-box">For a <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">ReadFile</code> operation, the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">wcifs.sys</code> driver saves a context state on top of the file object to help it perform a read/write operation. In addition, the worker thread <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">vmusrv</code> executes the read request either with direct access to the file, or through RDMA on top VMBus.</li></ol><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The actual process is much more complex, so we tried to focus on the components crucial to the virtualization.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The sandbox also allows mapping folders from host to guest through its configuration. Such folders receive a unique alias for the vSMB path, and the access is similar to the OS layer. The only difference is that the path is altered in the guest filter manager by <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">bindflt.sys</code>.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">For example, if we map the <em style="box-sizing:border-box">SysinternalsSuite </em>folder to the guest Desktop folder, the path <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">C:\Users\WDAGUtilityAccount\Desktop\SysinternalsSuite\Procmon.exe</code> is altered into <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:15.75px;color:rgb(232,62,140);word-break:break-word">\Device\vmsmb\VSMB-{dcc079ae-60ba-4d07-847c-3493609c0870}\db64085bcd96aab59430e21d1b386e1b37b53a7194240ce5e3c25a7636076b67\Procmon.exe</code>, which leaves rest of the process the same.</p><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem"><span style="box-sizing:border-box;font-weight:bolder">Playing with the Sandbox</span></h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">One of our targets in this research was to modify the base layer content according to our needs. Now that we understand the ecosystem, it appears to be quite easy.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The modification has a few simple steps:</p><ol style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box">Stop <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">CmService</code>, the service that creates and maintains the base layer. When the service is unloaded, it also removes the base layer mounting.</li><li style="box-sizing:border-box">Mount the base layer (it is in the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">C:\ProgramData\Microsoft\Windows\Containers\BaseImages\0949cec7-8165-4167-8c7d-67cf14eeede0\BaseLayer.vhdx</code> file). This can be done by double clicking, or using the <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">diskmgmt.msc</code> utility.</li><li style="box-sizing:border-box">Make modifications to the base layer. In our case, we added all FLARE post-installation files.</li><li style="box-sizing:border-box">Unmount the base layer.</li><li style="box-sizing:border-box">Start <code style="box-sizing:border-box;font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:14px;color:rgb(232,62,140);word-break:break-word">CmService</code>.</li></ol><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">The moment we start the sandbox, we have our awesome FLARE VM!</p><div class="gmail-wp-block-image" style="box-sizing:border-box;margin:0px 0px 1em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><img width="1024" height="537" class="gmail-wp-image-24823" src="https://research.checkpoint.com/wp-content/uploads/2021/03/figure25-1024x537.png" alt="" style="box-sizing: border-box; text-rendering: optimizelegibility; height: auto; max-width: 100%; vertical-align: bottom; border-style: none; border-radius: inherit;"></div><p class="gmail-has-text-align-center" style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;text-align:center;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Figure 25</span> – FLARE VM on top of the Windows Sandbox.</p><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem"><span style="box-sizing:border-box;font-weight:bolder">Summary</span></h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">When we started researching Windows Sandbox, we had no idea that such a "simple" operation boils down to a complex flow with several Microsoft internal undocumented technologies such as vSMB and Container Isolation.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">We hope this article will help the community with further information gathering and bug hunting. For us, this was a big first step into researching and understanding virtualization related technologies.</p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif">For any technical feedback, feel free to reach out on <a href="https://twitter.com/_alex_il_" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">twitter</a>.</p><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem"><span style="box-sizing:border-box;font-weight:bolder">Links</span></h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Hyper-V VmSwitch RCE Vulnerability</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://www.youtube.com/watch?v=025r8_TrV8I" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://www.youtube.com/watch?v=025r8_TrV8I</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Windows Sandbox</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://techcommunity.microsoft.com/t5/windows-kernel-internals/windows-sandbox/ba-p/301849" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://techcommunity.microsoft.com/t5/windows-kernel-internals/windows-sandbox/ba-p/301849</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Windows Sandbox WSB Configuration</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-configure-using-wsb-file" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/windows/security/threat-protection/windows-sandbox/windows-sandbox-configure-using-wsb-file</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Windows Containers</span></p><ul style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif;font-size:16px"><li style="box-sizing:border-box"><a href="https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/</a></li><li style="box-sizing:border-box"><a href="https://unit42.paloaltonetworks.com/what-i-learned-from-reverse-engineering-windows-containers/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://unit42.paloaltonetworks.com/what-i-learned-from-reverse-engineering-windows-containers/</a></li></ul><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">NTFS Attributes</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://www.urtech.ca/2017/11/solved-all-ntfs-attributes-defined/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://www.urtech.ca/2017/11/solved-all-ntfs-attributes-defined/</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Reparse Point</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/windows/win32/fileio/reparse-points</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">NTFS Documentation</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://dubeyko.com/development/FileSystems/NTFS/ntfsdoc.pdf</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">NTFS Reparse Tags</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c8e77b37-3909-4fe6-a4ea-2b9d423b1ee4" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-fscc/c8e77b37-3909-4fe6-a4ea-2b9d423b1ee4</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">VHDx Parent Locator</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-vhdx/b6332a98-624d-46b8-bd0e-b77b573662f9" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-vhdx/b6332a98-624d-46b8-bd0e-b77b573662f9</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">FS Filter Driver – Communication between User Mode and Kernel Mode</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/communication-between-user-mode-and-kernel-mode" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/windows-hardware/drivers/ifs/communication-between-user-mode-and-kernel-mode</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Hunting for Bugs in Windows Mini-Filter Drivers</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://googleprojectzero.blogspot.com/2021/01/hunting-for-bugs-in-windows-mini-filter.html" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://googleprojectzero.blogspot.com/2021/01/hunting-for-bugs-in-windows-mini-filter.html</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Hyper-V Storvsp.sys-Strovsc.sys Flow</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://www.linkedin.com/pulse/hyper-v-architecture-internals-pravin-gawale/" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://www.linkedin.com/pulse/hyper-v-architecture-internals-pravin-gawale/</a></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">RDMA Explained by Microsoft</span></p><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><a href="https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v-virtual-switch/rdma-and-switch-embedded-teaming" style="box-sizing:border-box;color:rgb(230,86,132);text-decoration-line:none;background-color:transparent">https://docs.microsoft.com/en-us/windows-server/virtualization/hyper-v-virtual-switch/rdma-and-switch-embedded-teaming</a></p><h1 style="box-sizing:border-box;margin-top:0px;margin-bottom:0.5rem;font-family:DIN,Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:rgb(33,37,41);font-size:2.1rem"><span style="box-sizing:border-box;font-weight:bolder">Appendix A</span></h1><p style="box-sizing:border-box;margin-top:0px;margin-bottom:1rem;font-size:18px;line-height:1.5em;color:rgb(33,37,41);font-family:DIN,Helvetica,Arial,sans-serif"><span style="box-sizing:border-box;font-weight:bolder">Windows Sandbox JSON configuration for vmwp</span></p><div class="enlighter-default enlighter-v-standard enlighter-t-enlighter enlighter-hover enlighter-linenumbers" style="box-sizing:border-box;font-family:"Source Code Pro","Liberation Mono","Courier New",Courier,monospace;font-size:12px;line-height:1.35em;overflow:hidden;white-space:pre-wrap;margin:0px 0px 20px;padding:0px;direction:ltr;color:rgb(147,147,147);border-radius:8px;border:1px solid rgb(224,224,224)"><div class="enlighter-toolbar-top enlighter-toolbar" style="box-sizing:border-box"><div class="enlighter-btn enlighter-btn-raw" title="Plain text" style="box-sizing:border-box;display:inline-block;margin:0px 0px 0px 8px;padding:0px;border:1px solid rgb(224,224,224);font-family:inherit;border-radius:3px;color:rgb(113,113,113);font-size:1em;width:23px;height:23px;background-position:0px 0px;background-size:contain"></div><div class="enlighter-btn enlighter-btn-copy" title="Copy to clipboard" style="box-sizing:border-box;display:inline-block;margin:0px 0px 0px 8px;padding:0px;border:1px solid rgb(224,224,224);font-family:inherit;border-radius:3px;color:rgb(113,113,113);font-size:1em;width:23px;height:23px;background-position:0px 0px;background-size:contain"></div><div class="enlighter-btn enlighter-btn-window" title="Open code in new window" style="box-sizing:border-box;display:inline-block;margin:0px 0px 0px 8px;padding:0px;border:1px solid rgb(224,224,224);font-family:inherit;border-radius:3px;color:rgb(113,113,113);font-size:1em;width:23px;height:23px;background-position:0px 0px;background-size:contain"></div><div class="enlighter-btn enlighter-btn-website" title="EnlighterJS 3 Syntax Highlighter" style="box-sizing:border-box;display:inline-block;margin:0px 0px 0px 8px;padding:0px;border:1px solid rgb(224,224,224);font-family:inherit;border-radius:3px;color:rgb(113,113,113);font-size:1em;width:23px;height:23px;background-position:0px 0px;background-size:contain"></div></div><div class="enlighter" style="box-sizing:border-box;display:table;width:1010px;border-collapse:collapse;border-spacing:0px;empty-cells:show;min-width:100%;font-size:1em;margin:0px;padding:0px"><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170);border-radius:8px 8px 0px 0px"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Owner"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Madrid"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SchemaVersion"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Major"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">2</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Minor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VirtualMachine"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"StopOnReset"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Chipset"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Uefi"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BootThis"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DeviceType"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VmbFs"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DevicePath"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"\\EFI\\Microsoft\\Boot\\bootmgfw.efi"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ComputeTopology"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Memory"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SizeInMB"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">1024</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Backing"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Virtual"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BackingPageSize"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Small"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"FaultClusterSizeShift"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DirectMapFaultClusterSizeShift"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnablePrivateCompressionStore"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnableHotHint"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnableColdHint"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SharedMemoryMB"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">2048</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SharedMemoryAccessSids"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"S-1-5-21-2542268174-3140522643-1722854894-1001"</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnableEpf"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnableDeferredCommit"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Processor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Count"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SynchronizeHostFeatures"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnableSchedulerAssist"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Devices"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Scsi"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"primary"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Attachments"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"0"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Type"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VirtualDisk"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Path"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\Sandboxes\\025b00c8-849a-4e00-bcb2-c2b8ec698bab\\sandbox.vhdx"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"CachingMode"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ReadOnlyCached"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"NoWriteHardening"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DisableExpansionOptimization"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"IgnoreRelativeLocator"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"CaptureIoAttributionContext"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"HvSocket"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"HvSocketConfig"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DefaultBindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;SY)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DefaultConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;SY)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ServiceTable"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"befcbc10-1381-45ab-946e-b1a12d6bce94"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AllowWildcardBinds"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"7d2e0620-034a-4438-b0fd-ae27fc0172a1"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;SY)(A;;FA;;;S-1-5-83-0)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"a715ac94-b745-4889-9a0f-772d85a3cfa4"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;LS)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;LS)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AllowWildcardBinds"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"7b3014c3-284a-40d4-a97f-9d23a75c6a80"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AllowWildcardBinds"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"e97910d9-55bb-455e-9170-114fdfce763d"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AllowWildcardBinds"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"e5afd2e3-9b98-4913-b37c-09de98772940"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AllowWildcardBinds"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"abd802e8-ffcc-40d2-a5f1-f04b1d12cbc8"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;SY)(A;;FA;;;BA)(A;;FA;;;S-1-15-3-3)(A;;FA;;;S-1-5-21-2542268174-3140522643-1722854894-1001)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(D;;FA;;;WD)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"f58797f6-c9f3-4d63-9bd4-e52ac020e586"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"BindSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;SY)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectSecurityDescriptor"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"D:P(A;;FA;;;SY)"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AllowWildcardBinds"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"EnhancedModeVideo"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ConnectionOptions"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AccessSids"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[</span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"S-1-5-21-2542268174-3140522643-1722854894-1001"</span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"NamedPipe"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"\\\\.\\pipe\\025b00c8-849a-4e00-bcb2-c2b8ec698bab"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"GuestCrashReporting"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"WindowsCrashSettings"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DumpFileName"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\Dumps\\025b00c8-849a-4e00-bcb2-c2b8ec698bab.dmp"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"MaxDumpSize"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">4362076160</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DumpType"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Full"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"VirtualSmb"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Shares"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Name"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"os"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Path"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\BaseImages\\0949cec7-8165-4167-8c7d-67cf14eeede0\\BaseLayer\\Files"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Options"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ReadOnly"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"TakeBackupPrivilege"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"NoLocks"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ReparseBaseLayer"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"PseudoOplocks"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"PseudoDirnotify"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SupportCloudFiles"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"DirectFileMappingInMB"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-n1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,153,153)">2048</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Licensing"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ContainerID"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"00000000-0000-0000-0000-000000000000"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"PackageFamilyNames"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Battery"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"KernelIntegration"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"GuestState"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"GuestStateFilePath"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\Sandboxes\\025b00c8-849a-4e00-bcb2-c2b8ec698bab\\sandbox.vmgs"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"RestoreState"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"TemplateSystemId"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"97d51d87-c49d-488f-bc29-33017f7703b9"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"RunInSilo"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"SiloBaseOsPath"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\ProgramData\\Microsoft\\Windows\\Containers\\BaseImages\\0949cec7-8165-4167-8c7d-67cf14eeede0\\BaseLayer\\Files"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"NotifySiloJobCreated"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"FileSystemLayers"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">[{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Id"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"8264f677-40b0-4ca5-bf9a-944ac2da8087"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Path"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"C:\\"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"PathType"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"AbsolutePath"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}]</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"LaunchOptions"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"Type"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"None"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"GuestConnection"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">{}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">}</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">,</span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(170,170,170)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"> </span><span class="enlighter-s0" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(221,17,68)">"ShouldTerminateOnLastHandleClosed"</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)">: </span><span class="enlighter-k1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(40,100,145);font-weight:700">true</span><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span></div></div><div class="gmail-" style="box-sizing:border-box;display:table-row;margin:0px;border:0px solid rgb(255,255,255);list-style:none;font-size:inherit;line-height:1.35em;min-height:14px;color:rgb(68,68,68);border-radius:0px 0px 8px 8px;background-color:rgb(255,252,211)"><div style="box-sizing:border-box;display:table-cell;padding-left:10px"><span class="enlighter-text" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(0,0,0)"></span><span class="enlighter-g1" style="box-sizing:border-box;margin:0px;padding:0px;line-height:inherit;font-size:1em;font-family:inherit;color:rgb(119,119,119)">} <a href="https://research.checkpoint.com/2021/playing-in-the-windows-sandbox/">Playing in the (Windows) Sandbox - Check Point Research</a> </span></div></div></div></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-57761902500459017172019-01-07T17:16:00.000+09:002019-01-07T17:18:28.782+09:00nvidia-cuda-enabled-products<div dir="ltr"><div dir="ltr"><br clear="all"><div><a href="http://aerobytepc.com/index-html/nvidia-cuda-enabled-products/">http://aerobytepc.com/index-html/nvidia-cuda-enabled-products/</a><br></div><div><br></div><div><br></div><div><h1 class="entry-title" style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:48px;margin:0px 0px 5px;font-weight:normal">NVIDIA® Cuda Enabled Products</h1><div class="entry-content" style="box-sizing:border-box;margin:0px auto;max-width:604px;width:604px;color:rgb(20,20,18);font-family:"Source Sans Pro",Helvetica,sans-serif;font-size:16px"><div class="gmail-panel-heading" style="box-sizing:border-box"><div class="gmail-panel-heading" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a class="gmail-" href="https://developer.nvidia.com/cuda-gpus#collapse4" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none"><img src="http://www.nvidia.com/docs/IO/85252/NV_GEF_3D.png" alt="GeForce" width="94" height="91" style="box-sizing: border-box; border: 0px; vertical-align: middle; max-width: 100%; height: auto;"> CUDA-Enabled GeForce® Products</a></h3></div><div id="gmail-collapse4" class="gmail-panel-collapse gmail-in" style="box-sizing:border-box"><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/geforce_family.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce® Desktop Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/10series/geforce-gtx-1080" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 1080</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">6.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan-x" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX TITAN X</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan-z" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX TITAN Z</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan-black" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX TITAN Black</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-titan" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX TITAN</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-980-ti" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 980 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-980" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 980</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-970" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 970</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-960" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 960</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-950" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 950</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-780-ti" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 780 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-780" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 780</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-770" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 770</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-760" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 760</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-750-ti" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 750 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-750" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 750</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-690" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 690</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-680" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 680</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-670" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 670</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-660ti" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 660 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-660" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 660</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-650ti-boost" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 650 Ti BOOST</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-650ti" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 650 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gtx-650" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 650</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-560ti-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 560 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gtx-550ti/" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 550 Ti</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-460-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 460</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gts-450-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 450</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gts-450-oem-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 450</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gtx-590/" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 590</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-580-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 580</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-570-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 570</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_480_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 480</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_470_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 470</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-465-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 465</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-740" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 740</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-730" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 730</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-730" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 730</a>DDR3,128bit</td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-720" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 720</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-705-oem/" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 705</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt640" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 640 (GDDR5)</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt640" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 640</a>(GDDR3)</td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-630" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 630</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-620" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 620</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-gt-610" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 610</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gt-520/" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 520</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-440-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 440</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-440-oem-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 440</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-430-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 430</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-430-oem-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 430</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr></tbody></table></div><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/notebooks.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce® Notebook Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-980" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 980</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-980m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 980M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-970m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 970M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-965m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 965M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-960m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 960M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-950m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 950M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-940m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 940M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-930m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 930M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-920m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 920M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-910m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 910M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-880m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 880M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-870m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 870M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-860m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 860M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0/5.0(**)</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-850m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 850M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-840m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 840M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-830m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 830M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-820m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 820M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-800m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 800M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-780m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 780M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-770m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 770M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-765m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 765M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-760m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 760M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-680mx" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 680MX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-680m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 680M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-675mx" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 675MX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-675m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 675M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-670mx" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 670MX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-670m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 670M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gtx-660m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 660M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-750m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 750M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-650m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 650M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-745m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 745M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-645m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 645M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-740m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 740M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 730M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-640m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 640M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-640m-le" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 640M LE</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-735m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 735M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-635m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 635M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-730m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 730M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-630m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 630M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-625m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 625M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-720m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 720M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-gt-620m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 620M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-710m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 710M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-705m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 705M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-610m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 610M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gtx-580m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 580M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gtx-570m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 570M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gtx-560m" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 560M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-555m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 555M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-550m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 550M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-540m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 540M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-525m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 525M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/#/Hardware/GPUs/geforce-gt-520mx" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 520MX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-520m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 520M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-485m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 485M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-470m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 470M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-460m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 460M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-445m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 445M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-435m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 435M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-420m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 420M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-415m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 415M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gtx-480m-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 480M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-710m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 710M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-410m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 410M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr></tbody></table></div></div><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/geforce_family.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Legacy GeForce® Desktop Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_295_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 295</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_285_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 285</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_285_for_mac_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 285 for Mac</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_gtx_280.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 280</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_275_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 275</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_gtx_260.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 260</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-geforce-gt-420-oem-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 420</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_240_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 240</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_220_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 220</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_210_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 210</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gts_250_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 250</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gts_150_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 150</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_130_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 130</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_120_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 120</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_g_100_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce G100</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800gx2.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800 GX2</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800gtx_plus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800 GTX+</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800gtx.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800 GTX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9600gso.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9600 GSO</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9500gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9500 GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800 GTS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/desktop-gpus/geforce-8800-gt" target="_blank" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800 GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800 GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8600 GTS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8600 GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8500 GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8400 GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_9400_mgpu_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9400 mGPU</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_9300_mgpu_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9300 mGPU</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8300mgpu.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8300 mGPU</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8200mgpu.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8200 mGPU</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8100mgpu.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8100 mGPU</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800 Ultra</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/page/geforce8.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800 GTX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_340_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 340</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_330_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 330</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_320_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 320</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_315_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 315</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_310_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 310</a><a title="OEM-only product" href="https://developer.nvidia.com/cuda-legacy-gpus#footnotes" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">*</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800 GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9600gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9600 GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_9400gt_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9400GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.0</td></tr></tbody></table></div><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/notebooks.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce® Notebook Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gts_360m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 360M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gts_350m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 350M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_335m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 335M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_330m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 330M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_325m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 325M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_240m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 240M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_g210m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce G210M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-710m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 710M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.geforce.com/hardware/notebook-gpus/geforce-410m" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 410M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_310m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 310M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_305m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 305M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_285m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 285M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_280m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 280M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gtx_260m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTX 260M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800m_gtx.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800M GTX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8800m.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800M GTX</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gts_260m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 260M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gts_250m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GTS 250M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800m_gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9600m_gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9600M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8800m.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8800M GTS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9800m_gts.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9800M GTS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_gt_230m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce GT 230M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9700m_gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9700M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9650m_gs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9650M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9700m_gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9700M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9650m_gs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9650M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9600m_gt.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9600M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9600m_gs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9600M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9500m_gs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9500M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8M.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8700M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8M.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8600M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8M.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8600M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9500m_g.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9500M G</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9300m_g.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9300M G</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8M.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8400M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_g210m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce G210M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_g110m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce G110M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9300m_gs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9300M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9200m_gs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9200M GS</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_9100m_g_mgpu.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 9100M G</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/geforce_8M.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce 8400M GT</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_geforce_g105m_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">GeForce G105M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">1.1</td></tr></tbody></table></div><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="https://developer.nvidia.com/cuda-gpus#collapseOne" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none"><img src="http://www.nvidia.com/docs/IO/85252/NV_Tesla_3D.png" alt="Tesla" width="94" height="91" style="box-sizing: border-box; border: 0px; vertical-align: middle; max-width: 100%; height: auto;"> CUDA-Enabled Tesla Products</a></h3></div><div id="gmail-collapseOne" class="gmail-panel-collapse gmail-in" style="box-sizing:border-box"><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/personal_computing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla® Workstation Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/personal-supercomputing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K80</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.7</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/personal-supercomputing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K40</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/personal-supercomputing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K20</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a title="Tesla C2075" href="http://www.nvidia.com/object/personal-supercomputing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla C2075</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_tesla_C2050_C2070_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla C2050/C2070</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr></tbody></table></div><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/tesla-servers.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla® Data Center Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/tesla-servers.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla M40</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/personal-supercomputing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K80</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.7</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/personal-supercomputing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K40</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/tesla-servers.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K20</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/tesla-servers.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla K10</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product_tesla_M2050_M2070_us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tesla M20xx</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr></tbody></table><div class="gmail-panel-heading" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a class="gmail-" href="https://developer.nvidia.com/cuda-gpus#collapse2" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none"><img src="http://www.nvidia.com/docs/IO/85252/NV_QUA_3D.png" alt="Quadro" width="94" height="91" style="box-sizing: border-box; border: 0px; vertical-align: middle; max-width: 100%; height: auto;"> CUDA-Enabled Quadro Products</a></h3></div><div id="gmail-collapse2" class="gmail-panel-collapse gmail-in" style="box-sizing:border-box"><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/page/workstation.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro® Desktop Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M6000 24GB</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M6000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K6000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M5000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K5200</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-k5000.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K5000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M4000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K4200</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K4000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M2000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K2200</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K2000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K2000D</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K1200</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K620</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K600</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K420</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-desktop-gpus.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro 410</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/product-quadroplex-7000-us.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro Plex 7000</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.0</td></tr></tbody></table></div><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro® Mobile Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K6000M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M5500M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K5200M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K5100M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M5000M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K500M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K4200M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K4100M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M4000M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K3100M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M3000M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K2200M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K2100M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M2000M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K1100M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M1000M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K620M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K610M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M600M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro K510M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.5</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/quadro-for-mobile-workstations.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Quadro M500M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr></tbody></table><div class="gmail-panel-heading" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a class="gmail-" href="https://developer.nvidia.com/cuda-gpus#collapse3" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none"><img src="http://www.nvidia.com/docs/IO/85252/NVS.Logo.png" alt="NVS" width="94" height="91" style="box-sizing: border-box; border: 0px; vertical-align: middle; max-width: 100%; height: auto;"> CUDA-Enabled NVS® Products</a></h3></div><div id="gmail-collapse3" class="gmail-panel-collapse gmail-in" style="box-sizing:border-box"><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/desktop-nvs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Desktop Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/nvs-product-overview.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVIDIA NVS 810</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/nvs-product-overview.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVIDIA NVS 510</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.0</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/nvs-product-overview.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVIDIA NVS 315</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/nvs-310-graphics-card.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVIDIA NVS 310</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr></tbody></table></div><div class="gmail-col-md-6" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/notebook-nvs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Mobile Products</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/notebook-nvs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVS 5400M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/notebook-nvs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVS 5200M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/notebook-nvs.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">NVS 4200M</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">2.1</td></tr></tbody></table><div class="gmail-panel-heading" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a class="gmail-" href="https://developer.nvidia.com/cuda-gpus#collapse5" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none"><br style="box-sizing:border-box"><img src="http://www.nvidia.com/docs/IO/144267/tegra4-k1.png" alt="Tegra" width="94" height="91" style="box-sizing: border-box; border: 0px; vertical-align: middle; max-width: 100%; height: auto;"> CUDA-Enabled TEGRA® /Jetson Products</a></h3></div><div id="gmail-collapse4" class="gmail-panel-collapse gmail-in" style="box-sizing:border-box"><div class="gmail-col-md-6" style="box-sizing:border-box"><div id="gmail-accordion" class="gmail-panel-group" style="box-sizing:border-box"><div class="gmail-panel gmail-panel-default" style="box-sizing:border-box"><div id="gmail-collapse5" class="gmail-panel-collapse gmail-in" style="box-sizing:border-box"><div class="gmail-col-md-10" style="box-sizing:border-box"><h3 style="box-sizing:border-box;clear:both;font-family:Bitter,Georgia,serif;line-height:1.3;font-size:22px;margin:22px 0px"><a href="http://www.nvidia.com/object/personal_computing.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tegra® Mobile & Embedded Processors</a></h3><table class="gmail-table gmail-table-striped" style="box-sizing:border-box;border-bottom:1px solid rgb(237,237,237);border-collapse:collapse;border-spacing:0px;font-size:14px;line-height:2;margin:0px 0px 20px;width:604px"><thead style="box-sizing:border-box"><tr style="box-sizing:border-box"><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">GPU</th><th style="box-sizing:border-box;text-align:left;text-transform:uppercase">COMPUTE CAPABILITY</th></tr></thead><tbody style="box-sizing:border-box"><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/tegra-x1-processor.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tegra X1</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">5.3</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="http://www.nvidia.com/object/tegra-k1-processor.html" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Tegra K1</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.2</td></tr><tr style="box-sizing:border-box"><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px"><a href="https://developer.nvidia.com/jetson-tk1" style="box-sizing:border-box;color:rgb(188,54,10);text-decoration-line:none">Jetson TK1</a></td><td style="box-sizing:border-box;border-top:1px solid rgb(237,237,237);padding:6px 10px 6px 0px">3.2<br><br></td></tr></tbody></table></div></div></div></div></div></div></div></div></div></div></div></div></div></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div>------------------------------------------------------<br></div><div>韓 飛</div><div>Mail : <a href="mailto:hanfeijp@gmail.com" target="_blank">hanfeijp@gmail.com</a></div><div>WeChatID: hanfeizmy</div><div>Facebook: <a href="http://facebook.com/Hanfeijp" target="_blank">http://facebook.com/Hanfeijp</a></div><div>------------------------------------------------------</div></div></div></div></div></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com1tag:blogger.com,1999:blog-3597687715095949318.post-66240187950603599012018-11-30T09:55:00.001+09:002018-11-30T09:55:33.056+09:00AWSクラウドをオンプレミスに持ち込むAWS Outpostsが発表<div style="color:; background-color:; font-family:MS Gothic,monospace;font-size:16px"><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"> Amazon Web Services(AWS)は2018年11月28日(米国時間)、米ラスベガスで開催中のAWS re:Invent 2018で、AWS CEOのアンディ・ジャシー氏とVMware CEOのパット・ゲルシンガー氏が、AWSクラウドを顧客の拠点に持ち込むハイブリッドクラウドソリューション、「AWS Outposts」のプライベートプレビュー版提供を発表した。一般提供開始は、2019年後半を予定している。</span></font></div><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"><br></span></font></div><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"> AWSが自社で利用している機種のサーバをラックに構成し、顧客拠点に届ける。顧客が要望すれば、必要なソフトウェアをAWSがインストールする。その後はマネージドサービスとして提供され、サーバラックの運用管理や交換といった作業もサービスの一環として提供される。</span></font></div><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"><br></span></font></div><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"> AWSが運用代行するサーバ群の上で、顧客はAmazon EC2、Amazon EBS、Amazon S3、Amazon RDS、Amazon EMRなどのサービスを動かせるようになる。顧客にとってのAWS Outpostsの見え方は、パブリッククラウドのAWSと同一。AWS管理コンソールあるいはAPI、関連ツールを使って管理できる。また、これを顧客が利用しているAWS VPCと接続することも可能。現時点では、プライベートプレビュー版利用の申し込みページへのリンクこそあるものの、AWS Outpostsの最小構成、価格/料金、当初提供されるサービス/機能などに関する具体的な説明はない。なお。この構成では、VMware Foundationを一部のサーバに導入することで、AWSのAPI/コンソールによる管理の下でVMware環境を併用することもできるという。この場合、VMware NSXによる両環境のネットワーク統合が実現する。</span></font></div><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"><br></span></font></div><div style=""><font face="MS Mincho, serif"><span style="font-size: 13.3333px;"> AWS Outpostsは、他にも選択肢がある。上記の構成をAWSでは「AWSネイティブバリアント(タイプ)」と呼ぶ。他に、「VMware Cloud on AWS Outpostsバリアント(タイプ)」と呼ぶものが選べるようになる予定。AWSのハードウェア上にVMware Cloud on AWSと同一のソフトウェアがインストールされ、VMwareの管理コンソールで利用できる。運用はマネージドサービスとして提供される。すなわち、こちらはVMware Cloud on AWSがオンプレミスで利用できるといったイメージだ。</span></font></div></div>hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-42529261488191937722018-11-28T10:14:00.001+09:002018-11-28T10:14:48.732+09:00量子コンピュータの力をさらに増幅できる「量子ネットワーク」 オランダのデルフト工科大学は、同大学のQuTechの研究者が、量子インターネットの実現に向けた包括的なビジョンを米国「Science」誌(2018年10月26日号)で発表したことを明らかにした。QuTechは、デルフト工科大学とオランダの応用科学研究機関TNOが共同で設立した先端研究センター。
<br>
<br> このビジョンでは、量子インターネットの開発が6つの段階で進むとした(以下の箇条書きでは段階ごとに可能になるアプリケーションをかっこ内に示した)。最初の段階では、安全な量子通信を実現する量子ビットのシンプルなネットワークが開発され、最終段階では、完全な量子コンピュータ同士のネットワークが構築されるという。
<br>
<br> 信頼性の高い中継器のネットワーク(量子鍵の配布、ただしエンドツーエンドのセキュリティは担保されず)
<br> 量子ビットの準備と測定を行うネットワーク(量子鍵の配布、セキュアな認証)
<br> 量子もつれ配送ネットワーク(デバイス非依存のプロトコル)
<br> 量子メモリのネットワーク(秘匿量子計算、シンプルな分散合意アルゴリズム)
<br> フォールトトレラントな量子ビットのネットワーク(時計の同期、分散量子計算)
<br> 量子コンピューティングネットワーク(リーダー選出アルゴリズム、高速ビザンチン合意アルゴリズム)
<br>
<br> 量子インターネットは、量子もつれ状態などの量子現象を利用して、通信技術を革命的に進化させるといわれている。研究者による現時点の取り組みは、地球上の2地点間で量子ビットを伝送する技術の開発だ。量子ビットは、「0」と「1」が混在した状態を採ることが可能だ。さらに複数の量子ビット間で量子"もつれ"を作ることもできる。このことを利用して、ある量子ビットを操作し、瞬時に別の量子ビットの状態に影響を与えるといった操作が可能になる。
<br>
<br> このような性質を利用して、現在のインターネットを超えるような2つの機能を実現できるという。一つは、もつれによって、遠く離れたサイト間の調整を改善すること。時計の同期はもちろん、遠く離れた望遠鏡同士を連携させてより品質の高い撮影画像を取得するといったタスクに極めて適している。
<br>
<br> もう一つの機能は、量子もつれに固有の安全性を利用するものだ。2つの量子ビットがもつれた状態はコピーすることができず、コピーしようとする試みを検出できる。セキュリティやプライバシーを必要とするアプリケーションにうってつけだ。
<br>
<br> 量子インターネットによるアプリケーションとして、他にもさまざまなものが知られている。量子ネットワークを実現できれば、さらに多くのアプリケーションを発見できるだろうといわれている。QuTechの研究者は、量子インターネットが開発される6つの段階ごとに、特徴的な技術機能やアプリケーションが登場すると予想した。
<br>
<br> 量子インターネットの最初の段階(試験ネットワーク)では、任意の2つのネットワークノード間で量子ビットを一度に1つずつエンドツーエンドで伝送することが可能になるという。これだけでも、量子ネットワークのさまざまな暗号アプリケーションを実現するために十分な性能が得られる。遠い将来訪れる最終段階では、任意の量子アプリケーションの実行環境となる大規模量子コンピュータ同士の接続という目標を実現できるだろう。
<br>
<br> QuTechの研究者の論文では、量子インターネットのこうした進化のビジョンが示されているだけでなく、量子インターネットのエンジニアリング上の課題やアプリケーション開発の課題も解説されている。
<br>
<br> 研究者は次のように語っている。
<br>
<br> 「われわれはこうしたネットワークを(6段階のうち)より高度な段階に進ませたい。だが、量子ソフトウェア開発者は、アプリケーションプロトコルの要件を軽減することを求められてもいる。より低い段階の技術でもアプリケーションを実現できるようにするためだ」
<br>
<br> エンドツーエンドの量子ビット伝送が可能な最初の量子ネットワークは、数年後に構築される見通しだ。それが大規模な量子インターネット開発の幕開けを告げることになる。
<br>
<br> 研究者は今回の論文が、物理学やコンピュータサイエンス、エンジニアリングにまたがる非常に学際的な分野である量子ネットワーキングの分野において、共通言語を提供することを期待している。hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-61232907618981396202018-11-28T10:02:00.001+09:002018-11-28T10:02:49.187+09:00AWSがサーバレスのための軽量VM、FirecrackerをOSSとして公開 Amazon Web Services(AWS)は2018年11月27日、米ラスベガスで開催中のAWS re:Invent 2018で、サーバレスコンピューティングのための軽量仮想マシン(VM)、「Firecracker」をオープンソースソフトウェアとしてGitHubで公開したことを明らかにした。
<br>
<br> AWSはAWS LambdaやAWS Fargateといったサーバレスサービスを、セキュリティおよびリソース分離の観点から、各顧客専用のインスタンスを割り当てて提供してきた。だが、これらのサービスが成長してくるにつれ、収容効率を考える必要が出てきたという。
<br>
<br> そこでAWSが開発したのがFirecrackerというOS未満のマイクロVMで、これにより、セキュリティおよびリソース分離といったメリットをもたらす一方、仮想化を挟むことによる収容効率の低下を防ぐことができるとする。
<br>
<br> FirecrackerはKVM上で動作。その上で動くコンテナなどのために、ネットワーク/ストレージを中心としたシンプルなI/Oインタフェースを提供する。メモリ消費は、マイクロVM当たり5MBという。単一のインスタンス上で、数千のマイクロVMを動かせるという。
<br>
<br> AWSはFirecrackerの開発を、世界中の開発者とともに進めていきたいとしている。
<br>
<br> <a href="https://github.com/firecracker-microvm/firecracker">https://github.com/firecracker-microvm/firecracker</a>hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-75765077600763258602018-11-25T19:33:00.000+09:002018-11-25T19:35:19.002+09:00物体検出についての歴史まとめ<div dir="ltr"><div dir="ltr"><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9">https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9</a><br></div><div dir="ltr"><br></div><div dir="ltr"><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">ここでは、物体の検出についてFaster R-CNN、YOLO、SSDのようなさまざまなアルゴリズムについて説明します。 物体検出の最先端、各手法の直感、アプローチ、それぞれの特徴を見ていきます。<br style="box-sizing:inherit">(ドラフト状態なので、随時修正と加筆する予定です。)</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-1-物体検出とは" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#1-%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA%E3%81%A8%E3%81%AF" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a> 1. 物体検出とは</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">物体検出は画像を取り込み、画像の中から定められた物体の位置とカテゴリー(クラス)を検出することを指します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">犬猫分類器を作成したとき、猫や犬の画像を撮り、そのクラスを予測しました。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1−1<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/1ce7bb8e1581629d0e7eadf4fc5770010b0f87ed/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f62396436393836382d353831302d363265632d623633322d3661326230366262323338632e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/1ce7bb8e1581629d0e7eadf4fc5770010b0f87ed/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f62396436393836382d353831302d363265632d623633322d3661326230366262323338632e6a706567" alt="image2.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">猫と犬の両方が画像に存在する場合、どう処理すべきでしょうか。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-2<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/f190fe8b3bfb41789498d1abe098dac3b5fa2ea0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f39353164316235382d613632392d643130332d383263652d3838633736343931386231652e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/f190fe8b3bfb41789498d1abe098dac3b5fa2ea0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f39353164316235382d613632392d643130332d383263652d3838633736343931386231652e6a706567" alt="image13.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">この場合、モデルは何を予測するのでしょうか?<br style="box-sizing:inherit">この問題を解決するために、両方のクラス(犬と猫)を予測する複数ラベル分類子を訓練することが可能です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">しかし、私たちはまだ猫や犬の位置を知りません。 画像内のクラスが与えられた物体の位置を特定する問題は、<span style="box-sizing:inherit;font-weight:700">localization</span> と呼ばれます。 物体クラスがわからない場合は、位置を決定するだけでなく、各物体のクラスを予測する必要があります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/2c4182851186d36de0ead30e4e33f1c03df26fca/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f36313466356538652d626537342d613236332d636635372d3561386237616264633131652e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/2c4182851186d36de0ead30e4e33f1c03df26fca/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f36313466356538652d626537342d613236332d636635372d3561386237616264633131652e6a706567" alt="image14.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">クラスと一緒に物体の位置を予測することを<span style="box-sizing:inherit;font-weight:700">物体検出</span>(object detection)と呼びます。 <br style="box-sizing:inherit">画像から物体のクラスを予測する代わりに、クラスとその物体を含む<span style="box-sizing:inherit;font-weight:700">矩形(バウンディングボックスという)</span>を予測する必要があります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">矩形を一意に識別するには4つの変数が必要です。 したがって、イメージ内の物体の各インスタンスについて、次の変数を予測します。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">class_name</li><li style="box-sizing:inherit;margin:0px;padding:0px">bounding_box_top_left_x_coordinate</li><li style="box-sizing:inherit;margin:0px;padding:0px">bounding_box_top_left_y_coordinate</li><li style="box-sizing:inherit;margin:0px;padding:0px">bounding_box_width</li><li style="box-sizing:inherit;margin:0px;padding:0px">bounding_box_height</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">複数種類の物体を1つの画像で検出すると、マルチクラスの物体検出の問題が発生する可能性があります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-4<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/e9aa7ec1d6daacaf3e615d95c578ea219b4961ec/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33323634326136332d386339642d653631362d396634322d3035393030353162383139362e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/e9aa7ec1d6daacaf3e615d95c578ea219b4961ec/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33323634326136332d386339642d653631362d396634322d3035393030353162383139362e6a706567" alt="image12.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">次章ではまず、物体検出器を訓練する一般論を見ていきます。<br style="box-sizing:inherit">歴史的に、2001年にViolaとJonesによって提案されたHaarカスケードから始まる物体検出には、多くのアプローチがありました。しかしここでは、ニューラルネットワークとDeep Learningを使用する最先端の方法にフォーカスしたいと思います。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">物体検出は、<br style="box-sizing:inherit">1. 入力画像から固定サイズのウィンドウをすべての可能な位置で取得して、<br style="box-sizing:inherit">2. これらのパッチ(領域)を画像分類器に入力する<br style="box-sizing:inherit">という分類問題としてモデル化されます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-5<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/7580b4d446dfdace98545aefe37c8b4d4ef974da/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38376663326339332d623565332d663633332d353462622d3035313339373263366262332e676966" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/7580b4d446dfdace98545aefe37c8b4d4ef974da/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38376663326339332d623565332d663633332d353462622d3035313339373263366262332e676966" alt="image10.gif" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">各ウィンドウは、ウィンドウ内の物体のクラス(または存在しない場合はバックグラウンド)を<br style="box-sizing:inherit">予測する分類器に渡されます。それにより、画像内の物体のクラスと位置の両方がわかります。 シンプルですが、果たしてどのようにして<span style="box-sizing:inherit;font-weight:700">ウィンドウサイズ</span>を知ることが出来るのでしょうか?</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">次のサンプルでは1枚目は小さなサイズであり、2枚目は大きなサイズです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-6 <br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/e1ad5b82f0e28eb39e95cf0d1a1dd75d6047f7fe/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38363736343336352d663265612d616464632d393930352d6138666438356237373435342e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/e1ad5b82f0e28eb39e95cf0d1a1dd75d6047f7fe/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38363736343336352d663265612d616464632d393930352d6138666438356237373435342e6a706567" alt="image22.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-7<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/d951a6422819cf9c3d2c231bbc8751dd0fe5af40/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f61366664636232342d383262372d373763352d363439312d6263346135643130356364372e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/d951a6422819cf9c3d2c231bbc8751dd0fe5af40/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f61366664636232342d383262372d373763352d363439312d6263346135643130356364372e6a706567" alt="image16.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">物体は様々なサイズにすることができます。 この問題を解決するため、元の画像を複数サイズにサイズ変更した画像を用意します。これらの画像のいずれかで、選択したサイズのウィンドウ内に物体が完全に含まれることになります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">一般的には、特定の条件(典型的には最小サイズに達する)が得られるまで、画像はダウンサンプリング(サイズが縮小)されます。 これらの画像のそれぞれについて、固定サイズのウィンドウ検出が実行されます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">このようなピラミッドには<span style="box-sizing:inherit;font-weight:700">64レベル</span>までのレベルがあるのが一般的です。 これらのウィンドウは全て、関心のあるオブジェクトを検出するために分類器に入力され、サイズと場所の問題を解決します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図1-8<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/900ea47316ea03a53d196d824e3182608ff63f6f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f63303764386464362d323830312d373938352d306665352d3663653634323034383130642e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/900ea47316ea03a53d196d824e3182608ff63f6f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f63303764386464362d323830312d373938352d306665352d3663653634323034383130642e706e67" alt="image8.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">もう1つ、<span style="box-sizing:inherit;font-weight:700">縦横比(アスペクト比、aspect ratio)</span>の問題があります。 座っている人が立っている人や眠っている人とは異なるアスペクト比を持つように、多くの物体がさまざまな形で存在します。アスペクト比については後述します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">R-CNN、Faster R-CNN、SSDなどのような物体検出のためのさまざまな方法があります。それぞれの特徴を見ていきます。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-物体検出の様々なアルゴリズム" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA%E3%81%AE%E6%A7%98%E3%80%85%E3%81%AA%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a> 2. 物体検出の様々なアルゴリズム</h2><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-1-hog機能を使用した物体検出" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-1-hog%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-1. HOG機能を使用した物体検出</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Navneet DalalとBill Triggsは、コンピュータビジョンの歴史の画期的な論文で、2005年に<span style="box-sizing:inherit;font-weight:700">HOG(Histogram of Oriented Gradients)機能</span>を導入しました。Hog機能は計算コストが安く、多くの現実世界の問題に適しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">スライディングによって得られた各ウィンドウ上で、我々は分類器を作成するためにSVM(サポートベクターマシン)に供給されるHog Featureを計算します。歩行者検出、顔検出、その他の多くの物体検出ユースケースのビデオでこれをリアルタイムで実行することができました。</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-22-r-cnn-region-based-cnn" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#22-r-cnn-region-based-cnn" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2−2. R-CNN (Region-based CNN)</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">物体検出のタスクに対してもCNNのアルゴリズムを上手く応用できないか?という課題を解く先駆けとなった論文[3]です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">深層学習の登場後、物体検出はより正確な畳み込みニューラルネットワークに基づく分類器に置き換えられました。しかし、CNNは非常に遅く、<span style="box-sizing:inherit;font-weight:700">計算上非常に高価</span>で、スライディングウィンドウ検出器によって生成された非常に多くのパッチでCNNを実行することは不可能でした。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">R-CNNは、<span style="box-sizing:inherit;font-weight:700">Selective Search</span>と呼ばれる物体候補(object proposal)アルゴリズムを使用することでこの問題を解決しました。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">R-CNNの目的は、画像を取り込み、画像内の主要な物体を bounding box を介して、正確に特定することです。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">入力:画像</li><li style="box-sizing:inherit;margin:0px;padding:0px">出力:画像内の各物体の境界ボックス+ラベル</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">しかし、これらの bounding box がどこにあるのかをどのように見つけ出すのでしょうか?</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">R-CNNは 画像の中にたくさんのボックスの候補をリストアップし(<span style="box-sizing:inherit;font-weight:700">region proposal</span>)、 それらのどれかが実際に物体に対応しているかどうかを調べます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-2-1<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/78bfd5fbb82cc9f5c4f8663e88c8b5416d6c1428/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65343933613364642d663161312d633532392d623737392d6239636166333339613537312e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/78bfd5fbb82cc9f5c4f8663e88c8b5416d6c1428/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65343933613364642d663161312d633532392d623737392d6239636166333339613537312e706e67" alt="image6.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span style="box-sizing:inherit;font-weight:700">Selective Search</span>(上記の画像参照) では、</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px"><span style="box-sizing:inherit;font-weight:700">複数のスケール</span>のウィンドウを調べて、</li><li style="box-sizing:inherit;margin:0px;padding:0px">テクスチャ、色、または強度を共有する隣接ピクセルを探し</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">物体を識別します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-2-2<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/eb0682aa43edbd867646111807c0cabf1fbd856b/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33633735303833392d623961642d373736372d306138612d3664336461396230343537382e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/eb0682aa43edbd867646111807c0cabf1fbd856b/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33633735303833392d623961642d373736372d306138612d3664336461396230343537382e706e67" alt="image15.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">CNNの全結合層は固定サイズの入力を受け取るので、生成されたすべてのボックスを固定サイズ(VGGの場合は224×224)にサイズ変更しCNN部分に渡します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">R-CNNのアルゴリズムは、以下の流れになります。</p><ol style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">物体らしさ(Objectness)を見つける既存手法(<span style="box-sizing:inherit;font-weight:700">Selective Search</span>)を用いて、画像から領域候補(Region Proposals)を探します(2000個程度)</li><li style="box-sizing:inherit;margin:0px;padding:0px">領域候補の領域画像を <span style="box-sizing:inherit;font-weight:700">全て一定の大きさにリサイズして</span> CNNにかけて特徴量を取り出す</li><li style="box-sizing:inherit;margin:0px;padding:0px">取り出した特徴量を使って複数のSVMによって学習しカテゴリ識別、regressorによってBounding Box の正確な位置を推定</li></ol><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-2-3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/53ba59cdd5d81fe2063dda0bf56f3714a0790037/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f35376337653363332d363936322d356535372d353738392d3565623939323764396331612e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/53ba59cdd5d81fe2063dda0bf56f3714a0790037/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f35376337653363332d363936322d356535372d353738392d3565623939323764396331612e6a706567" alt="image17.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">このアルゴリズムにより、PASCAL VOC 2012のデータセットにおいて(Deepじゃない)既存手法の精度を30%以上改善し、53.3%のmAPを達成しました。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-non-maximum-suppression" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#non-maximum-suppression" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>non-maximum suppression</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">IoU(Intersection over Union)値とは、画像の重なりの割合を表す値であり、<br style="box-sizing:inherit">この値が大きいほど画像が重なっている状態ということになります。<br style="box-sizing:inherit">逆に、小さいほど重なっていない状態ということになります。例えば、IoU=0のときは全く重なっていない状態ということになります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">non-maximum suppressionは、このIoUを利用して、同じクラスとして認識された重なっている状態の領域を抑制するためのアルゴリズムです。<br style="box-sizing:inherit">IoU値の閾値を0.3という具合に定め、この閾値よりも大きいものを重複した物体領域の候補として外し、閾値に満たないものは、物体領域の候補として残すことになります。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-r-cnn-の欠点" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#r-cnn-%E3%81%AE%E6%AC%A0%E7%82%B9" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>R-CNN の欠点</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">この手法の欠点としては下記のものが挙げられます。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">学習を各目的ごとに別々に学習する必要がある: CNNのFine-tune / 複数のSVMによるクラス分類 (Classification) /物体の詳細位置推定 (Bounding Box Regression)</li><li style="box-sizing:inherit;margin:0px;padding:0px">実行時間がすごく遅い:GPUを使って10-45 <a href="https://qiita.com/mshinoda88/items/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%A6%E5%A4%89%E5%8C%96" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">s/image</a></li></ul><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-3-spp-netspatial-pyramid-pooling" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-3-spp-netspatial-pyramid-pooling" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-3. SPP-net(spatial pyramid pooling)</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Selective Search によって生成された2000の領域候補(<span style="box-sizing:inherit;font-weight:700">region proposal</span>)上でCNNを実行すると、多くの時間がかかる問題がありました。SPP-Net はこの改善を試みたもので、画像1枚から一回のCNNで大きな特徴マップを作成した後、領域候補の特徴をSPPによってベクトル化し、スピードはGPU上にて24-102倍に高速化を実現しました。<br style="box-sizing:inherit">(2000個の領域候補はかなり領域の重複が多いため、重複する画像領域をCNNで特徴抽出するのはかなり無駄です。)</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">その領域に対応する<span style="box-sizing:inherit;font-weight:700">最後の畳み込み層の特徴マップのその部分だけにプーリング操作を実行</span>することで実現しています。<br style="box-sizing:inherit">中間層で起こるダウンサンプリング(VGGの場合は座標を単に16で割る)を考慮に入れて、畳み込み層上の領域を投影することによって、領域に対応する畳み込み層の矩形部分は計算可能です。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-空間プーリング" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E7%A9%BA%E9%96%93%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>空間プーリング</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">R-CNNでは、固定サイズの画像を入力として識別していました。<br style="box-sizing:inherit">SPPnetでは、Spatial Pyramid Pooling (SPP)という手法を用いることで、 CNNで畳み込んだ<span style="box-sizing:inherit;font-weight:700">最終層の特徴マップを縦横可変サイズで取り扱えるよう</span>にしました。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">SPPは伝統的に使用されているmax-pooling とは対照的に、<span style="box-sizing:inherit;font-weight:700">最後の畳み込みレイヤの後に空間的なプーリングを使用</span>します。SPP層は、任意のサイズの領域を<span style="box-sizing:inherit;font-weight:700">一定数のビンに分割</span>し、各ビンに対して max-pooling を実行します。<br style="box-sizing:inherit">ビンの数は同じであるため、下の図に示すように、一定のサイズのベクトルが生成されます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/a0a3a9e583bc62d3e4cece5748c6196b76e97779/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f32343465313435612d623632612d373130332d643432372d3737393836343962626538362e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/a0a3a9e583bc62d3e4cece5748c6196b76e97779/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f32343465313435612d623632612d373130332d643432372d3737393836343962626538362e706e67" alt="image18.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-sppの欠点" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#spp%E3%81%AE%E6%AC%A0%E7%82%B9" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>SPPの欠点</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">この手法の欠点としては下記のものが挙げられます。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">学習がad hocなのは変わらず</li><li style="box-sizing:inherit;margin:0px;padding:0px">最終的な学習時にSPP Layer以下のパラメータが更新できない</li></ul><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-4-fast-r-cnn" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-4-fast-r-cnn" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-4. Fast R-CNN</h3><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">RoI pooling layerという、SPPのpyramid構造を取り除いたシンプルな幅可変poolingを行う</li><li style="box-sizing:inherit;margin:0px;padding:0px">classification/bounding box regressionを同時に学習させるための <span style="box-sizing:inherit;font-weight:700">multi-task loss</span> によって1回で学習ができるようにする(ad hocでない)</li><li style="box-sizing:inherit;margin:0px;padding:0px">オンラインで教師データを生成する工夫</li><li style="box-sizing:inherit;margin:0px;padding:0px">multi-task lossの導入により、Back Propagationが全層に適用できるようになったため、全ての層の学習が可能に。</li><li style="box-sizing:inherit;margin:0px;padding:0px">実行速度は、VGG16を用いたR-CNNより9倍の学習速度、213倍の識別速度で、 SPPnetの3倍の学習速度、10倍の識別速度を達成。</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span style="box-sizing:inherit;font-weight:700"><Fast R-CNN の改善点></span></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span style="box-sizing:inherit;font-weight:700">1 : RoI (Region of Interest) プーリング</span><br style="box-sizing:inherit">関心領域プーリング、又はRoIプーリングは畳み込みニューラルネットワークを使用する物体検出タスクで広く使用される操作です。その目的は、不均一なサイズの入力に対して最大プールを実行して、固定サイズの特徴マップ(たとえば7×7)を得ることです。2015年4月にRoss Girshickによって最初に提案されています。([3])</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">オープンソースのRoIプーリング実装例<br style="box-sizing:inherit"><a href="https://github.com/deepsense-ai/roi-pooling" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/deepsense-ai/roi-pooling</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">画像の多くの領域候補が必ず重複し、同じCNN計算を何度も(最大2000回)実行していました。なので、画像を一回のみCNN実行し、領域間で計算結果を共有しようと試みました。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">CNNの特徴マップから対応する領域を選択することによって、各領域のCNN特徴がどのように取得されるかを確認します。次に各領域の特徴がプーリングされます(通常 max poolingを使用します)。したがって、従来手法の最大2000回とは対照的に、元の画像の1回のパスのみCNNが実行されます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span style="box-sizing:inherit;font-weight:700">2:すべてのモデルを1つのネットワークに統合</span></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-4−1<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/95c3fae275a8d2e2143c3a661bd879bc52870ed1/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f34616138643130622d363666352d626534382d323831322d6238636465393439373537362e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/95c3fae275a8d2e2143c3a661bd879bc52870ed1/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f34616138643130622d363666352d626534382d323831322d6238636465393439373537362e706e67" alt="image7.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Fast R-CNNの二つ目の改善点は、CNN、分類器(classifier)、バウンディングボックス回帰子(regressor)を単一のモデルで統合してトレーニングすることです。即ち、<span style="box-sizing:inherit;font-weight:700">エンドツーエンド(※1)のトレーニングが可能</span>という点です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">フレームワークの最初の段階で、画像の特徴を抽出し(CNN)、分類し(SVM)、より正確なバウンディングボックスの位置の回帰子(regressor)と異なるモデルを使用し、Fast R-CNNでは単一のネットワークを使用して3種類の計算をします。SVM分類器をCNN上のsoftmax層で置き換えて分類を出力します。また、bounding box 座標を出力するためにsoftmax層に平行な線形回帰層を追加しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">※1 <span style="box-sizing:inherit;font-weight:700">End-to-end 学習</span><br style="box-sizing:inherit">前処理かけたり複数のモデルを組み合わせたりすることなく、入力と出力の関係を直接単一のモデルで学習すること</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">この変更により、SPPネットと比較してトレーニング時間全体を短縮し、精度を向上させます。</li><li style="box-sizing:inherit;margin:0px;padding:0px">Fast R-CNN では bounding box の走査に Selective Search を利用していることは変わらず。</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">全体モデルへの入力と出力は次のとおり。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">入力:領域候補生成済みの画像情報。</li><li style="box-sizing:inherit;margin:0px;padding:0px">出力:各領域の物体分類と bounding box 座標とサイズ</li></ul><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-roiプーリングの詳細" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#roi%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%E3%81%AE%E8%A9%B3%E7%B4%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>RoIプーリングの詳細</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">RoIプーリングは実際に何をするのかを見ていきます。<br style="box-sizing:inherit">入力リストからすべての関心領域について、それに対応する入力特徴マップのセクションを取り、それを予め定義されたサイズ(例えば、7×7)にスケールします。スケーリングは次の方法で行います。</p><ol style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">領域候補を同じサイズのセクションに分割します(その数は出力の次元と同じ)</li><li style="box-sizing:inherit;margin:0px;padding:0px">各セクションで最大値を見つける</li><li style="box-sizing:inherit;margin:0px;padding:0px">これらの最大値を出力バッファにコピーする</li></ol><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">その結果、サイズの異なる長方形のリストから、固定サイズの対応する特徴マップのリストをすばやく取得できます。RoIプーリング出力の次元は、実際には入力特徴マップのサイズや領域提案のサイズに依存しないことに注意。<span style="box-sizing:inherit;font-weight:700">領域候補を分割するセクションの数だけによって決定されます</span>。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">RoIプーリングのメリットの1つは処理速度です。フレームに複数の物体候補がある場合(通常はたくさんある)、それらのすべてに対して同じ入力特徴マップを使用できます。ネットワーク処理の初期段階での畳み込み計算は非常にコストがかかるので、このアプローチは時間を大幅に節約できます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">実際の動作を見てみましょう。今、8×8の単一の特徴マップの1つの関心領域に対して2×2の出力サイズでRoIプーリングを実行してみます。入力特徴マップは次のようになります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-4−2<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/22098e5e56973b1a281435f02ffbafd88f01ac9f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f30336233636331632d373731362d363265312d633666382d6564653434636465386139612e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/22098e5e56973b1a281435f02ffbafd88f01ac9f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f30336233636331632d373731362d363265312d633666382d6564653434636465386139612e6a706567" alt="1.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">領域候補(左上、右下座標)の情報(0、3)、(7,8)があるとします。<br style="box-sizing:inherit">図2-4−3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/4dda420195e25ab21a664683e236084b9a874a16/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33646135666633352d643836652d646132392d643163382d3464303463326634333235302e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/4dda420195e25ab21a664683e236084b9a874a16/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33646135666633352d643836652d646132392d643163382d3464303463326634333235302e6a706567" alt="2.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">通常は、それぞれに複数の特徴マップと複数の候補がありますが、この例では単純化しています。出力サイズが2×2であるため、(2×2)セクションに分割すると、次のようになります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-4−4<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/250c3e9922ef2d052cf1fcc3f01dab78eee40ac0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f37643564313564612d316132322d393439662d343436302d3666666461646665323830662e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/250c3e9922ef2d052cf1fcc3f01dab78eee40ac0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f37643564313564612d316132322d393439662d343436302d3666666461646665323830662e6a706567" alt="3.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">関心領域のサイズは、プールセクションの数によって完全に割り切れる必要はないことに注意。<br style="box-sizing:inherit">この場合、RoIは7×5で、プールセクションは2×2です。各セクションの最大値は次のとおりです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-4−5<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/c25dfb7bd3dfa630a282aecd5a036678e5f761d0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65666132623139332d336437632d636130632d636234382d3436333534303739393436322e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/c25dfb7bd3dfa630a282aecd5a036678e5f761d0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65666132623139332d336437632d636130632d636234382d3436333534303739393436322e6a706567" alt="output.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">アニメーションの形で提示された例を示しておきます。<br style="box-sizing:inherit">図2-4−6<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/523b734f1955fde5c3b61c563a2bf62c20619e0f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f36616630646564332d323962322d373033352d643933352d3434306130323332623661652e676966" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/523b734f1955fde5c3b61c563a2bf62c20619e0f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f36616630646564332d323962322d373033352d643933352d3434306130323332623661652e676966" alt="roi_pooling-1.gif" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-5-faster-r-cnn" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-5-faster-r-cnn" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-5. Faster R-CNN</h3><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-ネットワーク概要" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E6%A6%82%E8%A6%81" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>ネットワーク概要</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">ネットワークを大別すると、backend部、RPN部、head部に分かれます。<br style="box-sizing:inherit">backend部は、入力画像の特徴を抽出する役割を担います。論文中では VGGとResNetを採用しています。<br style="box-sizing:inherit">RPN部は「物体らしき領域候補」が抽出されます。<br style="box-sizing:inherit">head部は「物体らしい」と判定された領域について、RoIプーリングを利用して物体のクラスの確率と領域位置を推定します。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-rpnregion-proposal-networkの導入" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#rpnregion-proposal-network%E3%81%AE%E5%B0%8E%E5%85%A5" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>RPN(Region Proposal Network)の導入</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Fast R-CNN のネットワーク全体のボトルネックは、Selective Search を利用した領域候補の生成部分でした。<br style="box-sizing:inherit">Faster R-CNN では、<span style="box-sizing:inherit;font-weight:700">ROI(region of interest)</span>の生成のために、Selective Searchを <span style="box-sizing:inherit;font-weight:700">RPN(Region Proposal Network)</span> と言われる小さな畳み込みネットワークに入れ替えました。RPNへ渡す<span style="box-sizing:inherit;font-weight:700">特徴マップの生成前に一度だけCNNを実行</span>します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-5-1<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/0e1528fb68e1244306150ca49569e58c495704cb/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38363063393034642d346136612d343065662d303166382d6361303834666361386636342e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/0e1528fb68e1244306150ca49569e58c495704cb/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38363063393034642d346136612d343065662d303166382d6361303834666361386636342e706e67" alt="image4.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-5-2<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/5765871926d37afa646a0fe105cc35c36e32bbf8/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f30653530623036662d633836372d376639642d386561652d3534373336633737653335332e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/5765871926d37afa646a0fe105cc35c36e32bbf8/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f30653530623036662d633836372d376639642d386561652d3534373336633737653335332e706e67" alt="image19.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-アンカーボックスの導入" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%82%A2%E3%83%B3%E3%82%AB%E3%83%BC%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E5%B0%8E%E5%85%A5" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>アンカーボックスの導入</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">画像内の物体は特定の一般的なアスペクト比とサイズに調整が必要となります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-5-3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/3d749995dcc88d90a2f9722e7d8d14e64b58a83a/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38343963393736382d626265382d393436632d366365642d3764333962366361366635302e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/3d749995dcc88d90a2f9722e7d8d14e64b58a83a/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f38343963393736382d626265382d393436632d366365642d3764333962366361366635302e706e67" alt="image11.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">例えば、上図のように、人なら人の形に似た縦長の長方形の箱が必要です。このようにして、<span style="box-sizing:inherit;font-weight:700">アンカーボックス</span>と呼ばれ、<span style="box-sizing:inherit;font-weight:700">k個のアスペクト比</span>をもつボックスを作成します。一つのアンカーボックスごとに、画像内の位置ごとのバウンディングボックスとスコアを出力します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">それぞれの位置で、</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">スケール128×128, 256×256, 512×512の3種類のアンカーボックスを使用します。</li><li style="box-sizing:inherit;margin:0px;padding:0px">同様に、アスペクト比では、1:1, 2:1, 1:2 の3つのアスペクト比を使用します。</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">→したがって、各場所で合計で9個(3×3)のアンカーボックスを保持します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-5-4<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/03eed4d7bcca0077b64f067afd3cf50a4ef75304/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65353761353038322d366535352d356238382d613163642d6539396362646134333033652e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/03eed4d7bcca0077b64f067afd3cf50a4ef75304/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65353761353038322d366535352d356238382d613163642d6539396362646134333033652e706e67" alt="image3.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-5-1で、アンカーボックスはRPNがバックグラウンドなのかフォアグラウンドなのか、即ち<span style="box-sizing:inherit;font-weight:700">物体でないのか、物体なのか</span>の確率を予測します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">上図で示すように、アンカーボックス一つにつきアスペクト比が k 個分用意され、それぞれが物体か背景かで2値分類のため、分類器に渡って、2k個のスコアを算出します。また、アンカーボックスの座標(x,y)とサイズ(高さ、幅)の4つの情報を、正確なバウンディングボックス回帰子(regressor)で 4k の値を予測します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Region Proposal Network への入力と出力は次のとおり。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">入力: CNN 特徴マップ</li><li style="box-sizing:inherit;margin:0px;padding:0px">出力: アンカーごとの bounding boxと物体か否かの2値スコア</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">各領域のアンカーボックスの予測器を改善するために、bounding box 回帰を適用します。そのため RPNは、各クラスの対応する確率でさまざまなサイズのバウンディングボックスを提供します。<br style="box-sizing:inherit">残りのネットワークは Fast R-CNN に似ています。Faster R-CNNは <span style="box-sizing:inherit;font-weight:700">Fast R-CNNより10倍高速</span>であり、VOC-2007のようなデータセットの精度は同様です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">表2-5-5<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/b670ece4bc04a121fe791ff2949fdee190125231/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f61643366626465652d383431372d366335332d326435302d3934336162313637633238302e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/b670ece4bc04a121fe791ff2949fdee190125231/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f61643366626465652d383431372d366335332d326435302d3934336162313637633238302e6a706567" alt="image23.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-regressionベースの物体検出" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#regression%E3%83%99%E3%83%BC%E3%82%B9%E3%81%AE%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Regressionベースの物体検出</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">これまでに説明したすべての手法では<br style="box-sizing:inherit">・最初に物体候補が生成され<br style="box-sizing:inherit">・次にこれらの候補を分類/回帰に送る<br style="box-sizing:inherit">というパイプラインを構築することで分類問題として検出を行っています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">回帰問題として検出を行う方法はいくつかあり、最も人気のある2つはYOLOとSSDです。<br style="box-sizing:inherit">これらの検出器は、シングルショット検出器とも呼ばれます。以下ではそれを見ていきます。</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-6-yoloyou-only-look-once" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-6-yoloyou-only-look-once" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-6. YOLO(You only Look Once)</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">YOLOは予め画像全体をグリッド分割しておき、各領域ごとに物体のクラスとbounding boxを求める、という方法を採用しています。<br style="box-sizing:inherit">CNNのアーキテクチャがシンプルになったため、Faster R-CNNに識別精度は少し劣りますが45-155FPSの検出速度を達成しています。<br style="box-sizing:inherit">またスライディングウィンドウや領域候補(Region Proposal)を使った手法と違い、1枚の画像の全ての範囲を学習時に利用するため、周辺のコンテクストも同時に学習することができます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">これにより、背景の誤検出を抑えることができるようになり、背景の誤検出はFast R-CNNの約半分の抑えることが出来ました。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-yolo-詳細" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#yolo-%E8%A9%B3%E7%B4%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>YOLO 詳細</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">画像全体をS×Sのグリッドに分割し、各グリッドはN個の <span style="box-sizing:inherit;font-weight:700">bounding box と confidence</span> を予測します。confidence は、</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">bounding box の精度と</li><li style="box-sizing:inherit;margin:0px;padding:0px">bounding box が実際にオブジェクトを含むかどうか(クラスに関係なく)</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">を反映します。YOLO はまた、トレーニング中の各クラスの各 bounding box の分類スコアを予測します。両方のクラスを組み合わせて、各クラスが予測される bounding box に存在する確率を計算することができます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">合計SxSxN 個の bounding box が予測されますが、多くの bounding box は confidence スコアが低く、<span style="box-sizing:inherit;font-weight:700">しきい値</span>を30%と設定すると、下の例に示すようにほとんどのものが削除されます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-6<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/a18a77773346a246a79c061bc4753f70caa791be/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f35666165613932352d353061612d343939312d323737352d6639383130663430333933622e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/a18a77773346a246a79c061bc4753f70caa791be/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f35666165613932352d353061612d343939312d323737352d6639383130663430333933622e6a706567" alt="image9.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">YOLOは超高速であり、リアルタイムで実行可能です。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">従来手法では、生成された領域候補(region proposals)のみを見ていたのに対して、</li><li style="box-sizing:inherit;margin:0px;padding:0px">YOLOは画像全体を一度のみ見ることです。</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">したがって、背景の誤検出回避に役立ちます。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-yoloの欠点" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#yolo%E3%81%AE%E6%AC%A0%E7%82%B9" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>YOLOの欠点</h4><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">分割されたグリッドサイズは固定かつ、グリッド内で識別できるクラスは1つ</li><li style="box-sizing:inherit;margin:0px;padding:0px">検出できる物体の数は2つ</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">という制約があるため、 グリッド内に大量の物体がある場合に弱くなります。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-7-ssdsingle-shot-detector" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-7-ssdsingle-shot-detector" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-7. SSD(Single Shot Detector)</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">SDは様々な階層の出力層からマルチスケールな検出枠を出力できるよう設計されています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><a href="https://camo.qiitausercontent.com/ccdaccf51529a777d24414a080383c9ca376cc11/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f35356531666564372d663334652d383433382d313431312d3035353434343266646462342e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/ccdaccf51529a777d24414a080383c9ca376cc11/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f35356531666564372d663334652d383433382d313431312d3035353434343266646462342e706e67" alt="01.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-ssdの主な特徴" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#ssd%E3%81%AE%E4%B8%BB%E3%81%AA%E7%89%B9%E5%BE%B4" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>SSDの主な特徴</h4><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">YOLOより高速で、Faster R-CNNと同等の精度を実現</li><li style="box-sizing:inherit;margin:0px;padding:0px">小さなフィルタサイズのCNNを特徴マップに適応することで、物体のカテゴリと位置を推定</li><li style="box-sizing:inherit;margin:0px;padding:0px"><span style="box-sizing:inherit;font-weight:700">マルチスケール特徴マップ</span>:様々なスケールの特徴を利用し、アスペクト比ごとに識別することで、高精度の検出率を達成</li><li style="box-sizing:inherit;margin:0px;padding:0px">比較的低解像度でも高精度に検出できる</li><li style="box-sizing:inherit;margin:0px;padding:0px">end-to-end のトレーニングが可能</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">入力画像上で畳み込みネットワークを1回だけ実行し、特徴マップを計算します。特徴マップ上に小さな3×3サイズの畳み込みカーネルを実行して、bounding box と分類確率を予測します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">SSDはまた、Faster R-CNN に類似した<span style="box-sizing:inherit;font-weight:700">様々なアスペクト比でアンカーボックスを使用</span>し、ボックスを学習するのではなくオフセットを学習します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-7-1<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/6d1ea7fa11fb2a5f84bd25e19b86a793584012ee/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f34383061363335642d363935382d393939362d363734392d3465386438313864383331622e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/6d1ea7fa11fb2a5f84bd25e19b86a793584012ee/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f34383061363335642d363935382d393939362d363734392d3465386438313864383331622e706e67" alt="02.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">上図の様に<span style="box-sizing:inherit;font-weight:700">異なる階層から特徴マップを使い</span>、比較的小さなサイズの物体も検出可能なため、<span style="box-sizing:inherit;font-weight:700">入力画像サイズを小さくしても、それなりの精度が出る</span>ため、高速化できています。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-初期ボックスとアスペクト比" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E5%88%9D%E6%9C%9F%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%82%A2%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E6%AF%94" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>初期ボックスとアスペクト比</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">異なるアスペクト比に対応するために、アスペクト比ごとに出力を分けています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">k個のアスペクト比の異なるボックス、c個の物体クラスと、4つのオフセットを出力する場合、1つセルのサイズは<span style="box-sizing:inherit;font-weight:700">(c+4)k</span> になります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">特徴マップがm*nとすると、 最終的な出力マップは、<span style="box-sizing:inherit;font-weight:700">(c+4)kmn</span> になります。<br style="box-sizing:inherit">閾値(0.5)を超えるJaccard係数でボックスを選択します。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-jaccard係数" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#jaccard%E4%BF%82%E6%95%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Jaccard係数</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">集合と集合の類似度を計算します。テキストマイニングの分野では文章の類似度で用いられ、文章Aに使われている単語と文章Bに使われている単語を抜き出して、その単語の和集合と共通部分から値を求めます。物体検出の場合は領域重複の度合いを表す。</p><div style="box-sizing:inherit;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-1-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:22.093em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:19.022em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-2" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-3" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-4" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-5" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">J<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-6" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-7" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">A</span><span class="gmail-mo" id="gmail-MathJax-Span-8" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-9" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">B</span><span class="gmail-mo" id="gmail-MathJax-Span-10" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-11" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mfrac" id="gmail-MathJax-Span-12" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:3.289em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-13" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-14" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span><span class="gmail-mi" id="gmail-MathJax-Span-15" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">A</span><span class="gmail-mo" id="gmail-MathJax-Span-16" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∩</span><span class="gmail-mi" id="gmail-MathJax-Span-17" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">B</span><span class="gmail-mo" id="gmail-MathJax-Span-18" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-19" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-20" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span><span class="gmail-mi" id="gmail-MathJax-Span-21" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">A</span><span class="gmail-mo" id="gmail-MathJax-Span-22" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∪</span><span class="gmail-mi" id="gmail-MathJax-Span-23" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">B</span><span class="gmail-mo" id="gmail-MathJax-Span-24" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:3.289em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-25" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-26" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-27" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:STIXGeneral,"Arial Unicode MS",serif;font-size:15.9616px"> </span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-28" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mfrac" id="gmail-MathJax-Span-29" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:8.462em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-30" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-31" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span><span class="gmail-mi" id="gmail-MathJax-Span-32" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">A</span><span class="gmail-mo" id="gmail-MathJax-Span-33" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∩</span><span class="gmail-mi" id="gmail-MathJax-Span-34" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">B</span><span class="gmail-mo" id="gmail-MathJax-Span-35" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-36" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-37" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-38" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-39" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-40" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">A</span><span class="gmail-texatom" id="gmail-MathJax-Span-41" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-42" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-43" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-44" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-texatom" id="gmail-MathJax-Span-45" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-46" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-47" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-48" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">B</span><span class="gmail-texatom" id="gmail-MathJax-Span-49" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-50" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-51" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-52" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mo" id="gmail-MathJax-Span-53" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span><span class="gmail-mi" id="gmail-MathJax-Span-54" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">A</span><span class="gmail-mo" id="gmail-MathJax-Span-55" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∩</span><span class="gmail-mi" id="gmail-MathJax-Span-56" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">B</span><span class="gmail-mo" id="gmail-MathJax-Span-57" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∣</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:8.462em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.184em;line-height:normal;overflow:hidden;width:0px;height:2.941em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:353.484px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">J(A,B)=∣A∩B∣∣A∪B∣<span class="gmail-MJX-TeXAtom-ORD"> </span>=∣A∩B∣<span class="gmail-MJX-TeXAtom-ORD">|</span>A<span class="gmail-MJX-TeXAtom-ORD">|</span>+<span class="gmail-MJX-TeXAtom-ORD">|</span>B<span class="gmail-MJX-TeXAtom-ORD">|</span>−∣A∩B∣</span></span></span></div></div><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-ロス関数" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%83%AD%E3%82%B9%E9%96%A2%E6%95%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>ロス関数</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">ロス関数は<br style="box-sizing:inherit">1. 物体の位置ずれである、localization loss (loc) と<br style="box-sizing:inherit">2. 物体のクラスである、confidence loss (conf)</p><div style="box-sizing:inherit;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-2-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-58" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:21.393em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:18.429em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-59" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-60" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-61" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-62" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span class="gmail-mo" id="gmail-MathJax-Span-63" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-64" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-65" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-66" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span class="gmail-mo" id="gmail-MathJax-Span-67" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-68" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span class="gmail-mo" id="gmail-MathJax-Span-69" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-70" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-71" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-72" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mfrac" id="gmail-MathJax-Span-73" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-74" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-75" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:1.026em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-76" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:2.212em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-77" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-78" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-79" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-80" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-81" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-82" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span><span class="gmail-mi" id="gmail-MathJax-Span-83" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">f<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-84" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-85" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-86" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-87" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span class="gmail-mo" id="gmail-MathJax-Span-88" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-89" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mi" id="gmail-MathJax-Span-90" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">α</span><span class="gmail-msubsup" id="gmail-MathJax-Span-91" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.619em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-92" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-93" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-94" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-95" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-96" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-97" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-98" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-99" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-100" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-101" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span class="gmail-mo" id="gmail-MathJax-Span-102" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-103" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-104" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.872em;line-height:normal;overflow:hidden;width:0px;height:2.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:342.281px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">L(x,c,L,g)=1NL<span class="gmail-MJX-TeXAtom-ORD">conf</span>(x,c)+αL<span class="gmail-MJX-TeXAtom-ORD">loc</span>(x,l,g)</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">を組み合わせたもの。各画像で出てきた全ての出力に対して、上式を計算する。(Nはマッチしたボックスの数、重みαは実験では1.0)<br style="box-sizing:inherit">localization lossは予測されたボックス(l)と正解ボックス(g)のパラメータ間でのSmooth L1 loss です。Faster R-CNNと同様、初期 bounding box(d)の中心(cx, xy)とその幅(w)と高さ(h)についてオフセットを回帰予測します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">ここで、Smooth L1 loss は以下の通り。<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/df48050afc5ead7ce259061c5ab1e123fdeea972/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f36663537383163372d306437392d656530372d336635372d3831323263376437653333332e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/df48050afc5ead7ce259061c5ab1e123fdeea972/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f36663537383163372d306437392d656530372d336635372d3831323263376437653333332e706e67" alt="img01.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><a href="https://camo.qiitausercontent.com/3e2aae56c9b884253c727485c02d5da6c2a0f351/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f62356463383932642d366563622d643236372d376564392d3034346639333339663063372e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/3e2aae56c9b884253c727485c02d5da6c2a0f351/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f62356463383932642d366563622d643236372d376564392d3034346639333339663063372e706e67" alt="img02.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">confidence loss は複数クラスの確信度(c)に対するソフトマックス誤差です。<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/ccac187a96696ef7a1bd9a319ed2b8ffa1f65361/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f32363964303431312d346337662d396336622d386438332d3062336635656130633761652e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/ccac187a96696ef7a1bd9a319ed2b8ffa1f65361/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f32363964303431312d346337662d396336622d386438332d3062336635656130633761652e706e67" alt="img03.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-初期ボックスのスケールとアスペクト比の選択" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E5%88%9D%E6%9C%9F%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AE%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AB%E3%81%A8%E3%82%A2%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E6%AF%94%E3%81%AE%E9%81%B8%E6%8A%9E" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>初期ボックスのスケールとアスペクト比の選択</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">単一の予測ネットワーク中の異なる層から特徴マップを利用することで,すべての物体スケールについて同じパラメータを共有しながら,同様の効果を得ることが可能。<br style="box-sizing:inherit">先行研究によると、以下が分かっています。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">下位層が入力物体の詳細をより良く捉えているため,下位層からの特徴マップを使用することでどの区画に何があるのかの認識(semantic segmentation)の品質を向上できる</li><li style="box-sizing:inherit;margin:0px;padding:0px">特徴マップからプールされた global context を加えることで分割結果をスムーズになる</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">1つのフレームワークの異なる階層からの特徴マップは異なる(経験的な)受容野サイズを持つことが知られていますが、論文中では特定の特徴マップがある特定のスケールの物体を担当するように学習するよう,初期ボックスの敷き詰めを設計しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">m個の特徴マップを予測に使用するものとすると、各特徴マップについての初期ボックスのスケールは次のように計算されます。</p><div style="box-sizing:inherit;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-3-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-105" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:21.501em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:18.537em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-106" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-107" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-108" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtable" id="gmail-MathJax-Span-109" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:18.214em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:18.214em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-110" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-111" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-112" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-113" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-114" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-115" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msubsup" id="gmail-MathJax-Span-116" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.835em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-117" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-118" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-119" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-120" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-121" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-122" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-123" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mfrac" id="gmail-MathJax-Span-124" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:5.121em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-125" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-126" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.942em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-127" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-128" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-129" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-130" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-131" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">a</span><span class="gmail-mi" id="gmail-MathJax-Span-132" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-133" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-134" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.835em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-135" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-136" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-137" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-138" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-139" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-140" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-141" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-142" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mo" id="gmail-MathJax-Span-143" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mn" id="gmail-MathJax-Span-144" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:5.121em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-145" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-146" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">k</span><span class="gmail-mo" id="gmail-MathJax-Span-147" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mn" id="gmail-MathJax-Span-148" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-149" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-150" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-151" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">k</span><span class="gmail-mo" id="gmail-MathJax-Span-152" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∈</span><span class="gmail-mo" id="gmail-MathJax-Span-153" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">[</span><span class="gmail-mn" id="gmail-MathJax-Span-154" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-155" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-156" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mo" id="gmail-MathJax-Span-157" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">]</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.809em;line-height:normal;overflow:hidden;width:0px;height:2.253em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:344.016px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">sk=s<span class="gmail-MJX-TeXAtom-ORD">min</span>+s<span class="gmail-MJX-TeXAtom-ORD">max</span>−s<span class="gmail-MJX-TeXAtom-ORD">min</span>m−1(k−1),k∈[1,m]</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">ここで<span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><span class="gmail-MathJax" id="gmail-MathJax-Element-4-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-158" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:11.371em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.809em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-159" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-160" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.835em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-161" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-162" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-163" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-164" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-165" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-166" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-167" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mn" id="gmail-MathJax-Span-168" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0.2</span><span class="gmail-texatom" id="gmail-MathJax-Span-169" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-170" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-171" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:STIXGeneral,"Arial Unicode MS",serif;font-size:15.9616px">,</span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-172" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.942em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-173" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-174" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-175" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-176" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-177" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">a</span><span class="gmail-mi" id="gmail-MathJax-Span-178" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-179" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mn" id="gmail-MathJax-Span-180" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0.9</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.481em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.309em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML" style="box-sizing:inherit;padding:0px;border:0px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;width:1px;overflow:hidden">s<span class="gmail-MJX-TeXAtom-ORD">min</span>=0.2<span class="gmail-MJX-TeXAtom-ORD">,</span>s<span class="gmail-MJX-TeXAtom-ORD">max</span>=0.9</span></span>であり,最下位層は0.2,最上位層は0.9のスケールを持つこと意味します。その中間のすべての階層は等間隔に設定されます。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-ハードネガティブマイニングhard-negative-mining" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%83%8F%E3%83%BC%E3%83%89%E3%83%8D%E3%82%AC%E3%83%86%E3%82%A3%E3%83%96%E3%83%9E%E3%82%A4%E3%83%8B%E3%83%B3%E3%82%B0hard-negative-mining" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>ハードネガティブマイニング(hard negative mining)</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">マッチング工程後、特に初期ボックスの数が大きい場合、多くの初期ボックスは負(negatives)になり、正と負の訓練例の間に大きな不均衡となります。<br style="box-sizing:inherit">すべての負の訓練例を使わず、</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">各初期ボックスについて confidence loss でソートして</li><li style="box-sizing:inherit;margin:0px;padding:0px">負と正の比率が最大でも3:1になるようにして選びます</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">これにより,より速い最適化とより安定した訓練に繋がると報告されています。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-データ拡張" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%83%87%E3%83%BC%E3%82%BF%E6%8B%A1%E5%BC%B5" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>データ拡張</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">モデルを様々な入力物体サイズと形状に対してロバストにするために、各訓練画像は次に示すオプションによってランダムにサンプリングしています。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">元の入力画像全体を使用</li><li style="box-sizing:inherit;margin:0px;padding:0px">物体との最小の jaccard overlap が0.1, 0.3, 0.4, 0.7, 0.9となるように パッチをサンプリング</li><li style="box-sizing:inherit;margin:0px;padding:0px">ランダムにパッチをサンプルする.</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">各サンプルパッチのサイズは元の画像サイズの[0.1, 1]で,アスペクト比は1/2と2の間。サンプルパッチの中に正解ボックスの中心がある場合には,正解ボックスの重複部分は保持するものとします。前述のサンプリングステップの後に,各サンプルパッチは,フォトメトリックな歪みを適用することに加えて,固定サイズにリサイズされ,確率0.5で水平にフリップします。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-速度と性能のトレードオフ" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E9%80%9F%E5%BA%A6%E3%81%A8%E6%80%A7%E8%83%BD%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%83%89%E3%82%AA%E3%83%95" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>速度と性能のトレードオフ</h4><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">精度を優先する場合 Faster R-CNN</li><li style="box-sizing:inherit;margin:0px;padding:0px">計算に制限がある場合 SSD</li><li style="box-sizing:inherit;margin:0px;padding:0px">超高速を求める場合 YOLO</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">がオススメ。以下は速度と性能のトレードオフを視覚化したものです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-7-2<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/9df7268d837789dd0be760f032f4737d6cc1873c/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f64363466396530612d633636332d323531382d393630332d3365393565646136383138642e6a706567" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/9df7268d837789dd0be760f032f4737d6cc1873c/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f64363466396530612d633636332d323531382d393630332d3365393565646136383138642e6a706567" alt="image5.jpg" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">下図は SSD、YOLO、Faster R-CNN のパフォーマンス比較グラフです。<br style="box-sizing:inherit">検出物体のサイズが大きい場合は、SSDはFaster R-CNN と同等の精度ですが、物体サイズが小さい場合は、Faster R-CNN の精度はSSDより良く差が大きい。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-7-3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/798aee0473c82a547127d21ca07302a47f6af9f9/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f66623866633031382d656533652d326230662d333166332d3832626230323664396332662e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/798aee0473c82a547127d21ca07302a47f6af9f9/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f66623866633031382d656533652d326230662d333166332d3832626230323664396332662e706e67" alt="image1.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-ssd-のvoc2007のデータセットにおいての成績" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#ssd-%E3%81%AEvoc2007%E3%81%AE%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AB%E3%81%8A%E3%81%84%E3%81%A6%E3%81%AE%E6%88%90%E7%B8%BE" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>SSD のVOC2007のデータセットにおいての成績</h4><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">300×300の画像サイズにおいて 74.3% mAPという高精度を保ったまま、59 FPSを達成(YOLOは63.4% mAP)</li><li style="box-sizing:inherit;margin:0px;padding:0px">512×512の画像サイズにおいては、76.9% mAPを達成(Faster R-CNNは73.2% mAP)</li></ul><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-2-8-mask-r-cnn" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#2-8-mask-r-cnn" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>2-8. Mask R-CNN</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Facebook AIの研究結果。<br style="box-sizing:inherit">Mask R-CNNでは、Faster R-CNNのCNN機能の上に全結合ネットワークが追加され、マスク(セグメント化出力)が生成されます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-8-1<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/1a9ffb3a269fca587b8a17f481098c66943da33c/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f34616332353835662d623865362d653461342d376337372d3734323964666166383537382e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/1a9ffb3a269fca587b8a17f481098c66943da33c/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f34616332353835662d623865362d653461342d376337372d3734323964666166383537382e706e67" alt="image24.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">Mask R-CNNは、Faster R-CNN に分岐(上記の画像の白い部分)を追加し、指定ピクセルが物体の一部かどうかを示すバイナリマスクを出力します。<br style="box-sizing:inherit">追加されたブランチ部は、CNNベースの特徴マップの上にある完全畳み込みネットワークです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">ブランチ部の入力と出力</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">入力:CNN特徴マップ</li><li style="box-sizing:inherit;margin:0px;padding:0px">出力:物体なら1, 物体でないなら 0 を表すバイナリマスク、を持つ行列</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">このパイプラインを期待どおりに動作させるために、小さな調整を行う必要がありました。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-roialign-roipoolの再配置" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#roialign-roipool%E3%81%AE%E5%86%8D%E9%85%8D%E7%BD%AE" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>RoiAlign :RoIPoolの再配置</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-8-2<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/e4137cd5fcc0d2e575cd114ad407f737f479e78f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65653163366134632d653564342d346464622d373036332d6464393635346461346662342e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/e4137cd5fcc0d2e575cd114ad407f737f479e78f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f65653163366134632d653564342d346464622d373036332d6464393635346461346662342e706e67" alt="image21.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-4−4 のように、関心領域のサイズは、プールセクションの数によって完全に割り切れず、RoIPoolによって選択された特徴マップの領域が元の画像の領域からわずかにずれていました。<br style="box-sizing:inherit">画像のセグメンテーションは、bounding box とは異なり、ピクセルレベルで特定する必要があるため、当然不正確でした。なので、元の画像の領域により正確に対応するように、RoIPoolの代わりに、RoIAlignを通過させます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-8-3<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/e72f433e5e94da129e4213b45b90a7c49712465e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f32323465346363652d316166312d353966612d656265652d3266363462623565353433352e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img width="692" alt="スクリーンショット 2018-04-18 17.25.08.png" src="https://camo.qiitausercontent.com/e72f433e5e94da129e4213b45b90a7c49712465e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f32323465346363652d316166312d353966612d656265652d3266363462623565353433352e706e67" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">プールセクションのずれによる丸め誤差が発生していたRoIPoolの代わりに、RoIAlignでは、このような丸め誤差を双線形補間(biliear interpolation)([12])を使用して避けています。補間処理した各セクションの値からMaxプーリングを行います。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">これにより高いレベルで、RoIPoolによって引き起こされる不整合を避けることができます。これらのマスクが生成されると、Mask R-CNNはそれらをFaster R-CNNの分類および bounding box と組み合わせて、そのようなきわめて正確なセグメンテーションを生成します。</p><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt";color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-バイリニア補間" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%83%90%E3%82%A4%E3%83%AA%E3%83%8B%E3%82%A2%E8%A3%9C%E9%96%93" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>バイリニア補間</h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">各セル内の4点の近傍4ピクセルからバイリニア補間(双線形補間,bilinear interpolation)を用いて各点の値を計算します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">図2-8-4<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/dd08a8cc3eff9307e4b0450d10294a19098601c2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f63333030626432612d326266622d613434302d633063632d3733353833353231653031642e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/dd08a8cc3eff9307e4b0450d10294a19098601c2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f63333030626432612d326266622d613434302d633063632d3733353833353231653031642e706e67" alt="bilinear_graph.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><ol style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px"><li style="box-sizing:inherit;margin:0px;padding:0px">周囲4セルの値を取得し、(I(x0,y0),I(x0+1,y0),I(x0,y0+1),I(x0+1,y0+1))</li><li style="box-sizing:inherit;margin:0px;padding:0px">補正後のセルの中央点 (x',y')からの距離を求めます。</li><li style="box-sizing:inherit;margin:0px;padding:0px">距離によって重み付け(0~1)を行います。(距離が小さいほど重みは大きい)</li><li style="box-sizing:inherit;margin:0px;padding:0px">1.の値の加重平均をセルの中央点における値 I(x',y') とします。</li></ol><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">以下の式で求められます。<br style="box-sizing:inherit"><a href="https://camo.qiitausercontent.com/41a30c94b267a0ccbd3eb0d2701e193fead3c0c4/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33616564653532332d623963302d313363302d386165632d3833393065386535323263622e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/41a30c94b267a0ccbd3eb0d2701e193fead3c0c4/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3139393236352f33616564653532332d623963302d313363302d386165632d3833393065386535323263622e706e67" alt="bilinear_graph2.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-まとめ" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E3%81%BE%E3%81%A8%E3%82%81" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>まとめ</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">物体検出手法の選択は非常に重要であり、解決しようとしている問題と環境で異なります。<br style="box-sizing:inherit">物体検出は、自動運転車、セキュリティおよび監視、および多くの産業アプリケーションなど、コンピュータビジョンの多くの実際的なアプリケーションのバックボーンです。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif"><span id="gmail-参考文献" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/mshinoda88/items/9770ee671ea27f2c81a9#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>参考文献</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[1] Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition<br style="box-sizing:inherit"><a href="https://arxiv.org/abs/1406.4729" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://arxiv.org/abs/1406.4729</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[2] SSD: Single Shot MultiBox Detector<br style="box-sizing:inherit"><a href="https://arxiv.org/abs/1512.02325" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://arxiv.org/abs/1512.02325</a>.</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[3] R-CNN<br style="box-sizing:inherit"><a href="https://arxiv.org/abs/1311.2524" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://arxiv.org/abs/1311.2524</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[4] Fast R-CNN<br style="box-sizing:inherit"><a href="https://arxiv.org/abs/1504.08083" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://arxiv.org/abs/1504.08083</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[5] Faster R-CNN<br style="box-sizing:inherit"><a href="https://arxiv.org/abs/1506.01497" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://arxiv.org/abs/1506.01497</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[6] Mask R-CNN<br style="box-sizing:inherit"><a href="https://arxiv.org/abs/1703.06870" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://arxiv.org/abs/1703.06870</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[7] Zero to Hero: Guide to Object Detection using Deep Learning: Faster R-CNN,YOLO,SSD<br style="box-sizing:inherit"><a href="http://cv-tricks.com/object-detection/faster-r-cnn-yolo-ssd/" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">http://cv-tricks.com/object-detection/faster-r-cnn-yolo-ssd/</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[8] A Brief History of CNNs in Image Segmentation: From R-CNN to Mask R-CNN<br style="box-sizing:inherit"><a href="https://blog.athelas.com/a-brief-history-of-cnns-in-image-segmentation-from-r-cnn-to-mask-r-cnn-34ea83205de4" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://blog.athelas.com/a-brief-history-of-cnns-in-image-segmentation-from-r-cnn-to-mask-r-cnn-34ea83205de4</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[9] Mask R-CNN<br style="box-sizing:inherit"><a href="https://www.slideshare.net/windmdk/mask-rcnn" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://www.slideshare.net/windmdk/mask-rcnn</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[10] Region of interest pooling explained<br style="box-sizing:inherit"><a href="https://blog.deepsense.ai/region-of-interest-pooling-explained/" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://blog.deepsense.ai/region-of-interest-pooling-explained/</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[11] Instance segmentation with Mask R-CNN<br style="box-sizing:inherit"><a href="https://lmb.informatik.uni-freiburg.de/lectures/seminar_brox/seminar_ss17/maskrcnn_slides.pdf" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://lmb.informatik.uni-freiburg.de/lectures/seminar_brox/seminar_ss17/maskrcnn_slides.pdf</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:16px">[12] 線形補間、バイリニア補間<br style="box-sizing:inherit"><a href="https://goo.gl/snAcXQ" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://goo.gl/snAcXQ</a></p></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-833162530517747532018-11-25T18:02:00.000+09:002018-11-25T18:03:43.086+09:00Deepに理解する深層学習による物体検出 by Keras<div dir="ltr"><div dir="ltr"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#yolo-you-only-look-once">https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#yolo-you-only-look-once</a><br></div><div dir="ltr"><br></div><div dir="ltr"><div class="gmail-p-items_wrapper" style="box-sizing:inherit;background-color:rgb(246,246,246);color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:14px"><div class="gmail-p-items_container" style="box-sizing:inherit;display:grid;max-width:1280px;margin-right:auto;margin-left:auto;padding-top:24px;padding-bottom:40px"><div class="gmail-p-items_main" style="box-sizing:inherit;padding:16px"><div class="gmail-p-items_article" style="box-sizing:inherit;background-color:rgb(255,255,255);padding:32px"><div id="gmail-item-8c946208de0d6a4e31e7" style="box-sizing:inherit;margin-top:0px"><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)">誰向け</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">深層学習をすでに理解して画像の分類から物体検出への仕組みをマスターしたい方へ</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">数式が多いのでコード確認したい方は下記へGo</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="http://qiita.com/GushiSnow/private/8c946208de0d6a4e31e7#%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E5%AE%9F%E8%A3%85%E4%BE%8B" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">具体的な実装例</a></p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-おまけ" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E3%81%8A%E3%81%BE%E3%81%91" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>おまけ</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">Kerasに関する書籍を翻訳しました。画像識別、画像生成、自然言語処理、時系列予測、強化学習まで幅広くカバーしています。<br style="box-sizing:inherit"><a href="https://www.amazon.co.jp/Deep-Learning-%E2%80%95Python%C3%97Keras%E3%81%A7%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2%E3%82%92%E5%BD%A2%E3%81%AB%E3%81%99%E3%82%8B%E3%83%AC%E3%82%B7%E3%83%94-Antonio-Gulli/dp/4873118263/ref=sr_1_1?s=books&ie=UTF8&qid=1530227887&sr=1-1&keywords=%E7%9B%B4%E6%84%9F+Deep+Learning" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ</a></p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-目的" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E7%9B%AE%E7%9A%84" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>目的</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">物体検出に関しての技術を体系的にまとめてコードベースまで理解したかったので書きました。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">良書である画像認識の物体認識の章を参考にこの記事を作成しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://www.amazon.co.jp/%E7%94%BB%E5%83%8F%E8%AA%8D%E8%AD%98-%E6%A9%9F%E6%A2%B0%E5%AD%A6%E7%BF%92%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E5%8E%9F%E7%94%B0-%E9%81%94%E4%B9%9F/dp/4061529129" title="画像認識" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">画像認識</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/dbdede0ee37a2ba11f7005c425ba494e7900da77/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f37653463366130622d646436622d653439342d663234622d3866363864653764316663302e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/dbdede0ee37a2ba11f7005c425ba494e7900da77/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f37653463366130622d646436622d653439342d663234622d3866363864653764316663302e706e67" alt="Screen Shot 2017-06-22 at 9.37.01.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-全体像" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%85%A8%E4%BD%93%E5%83%8F" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>全体像</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/deb645b8a2968f9d0235214f660f695471b730a5/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f38343134623733382d303164302d326231322d303230632d3936393231383733623938372e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/deb645b8a2968f9d0235214f660f695471b730a5/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f38343134623733382d303164302d326231322d303230632d3936393231383733623938372e706e67" alt="Screen Shot 2017-06-22 at 9.59.59.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">大きく分けて3つのフェーズに分かれます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: 物体領域候補の抽出</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">画像中から物体の領域候補を抽出する手法になります。精度と速度を左右する部分になります。図のように小ウインドウ(バウンディングボックス)を用意して一定の画素数ずらしながら領域候補を抽出する手法があります。これは1画素ごとにずらすと画像のサイズW*Hの評価が必要になります。そこでこの計算コストを減らすために物体の画像らしさを評価する手法で候補を絞り込むことが一般的です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">2: 物体領域候補の物体認識</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">候補に何が写っているかを認識する必要があります。ここは一般的な教師ありの分類問題で解くことが可能です。ここで重要になってくるのが教師データの選定です。負例(間違っているデータ)は分類が困難な例を選ばないと簡単な問題しか解けない分類器となり実用に耐えない性能になります。そこで分類困難な負例として選ぶことが重要になります。この図だと牛の全体像が取れている部分は負例として適切です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">3: 検出領域の絞り込み</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">対象となる物体が一つであっても複数領域が出てきます。この中から検出スコアが最大値のみの部分を選定することで適切な検出領域を決定します。</p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-各手法" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%90%84%E6%89%8B%E6%B3%95" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>各手法</h1><table style="box-sizing:inherit;border-collapse:collapse;border-spacing:0px;display:block;overflow:auto;margin:1.5em 0px;border-left:1px solid rgb(221,221,221)"><thead style="box-sizing:inherit"><tr style="box-sizing:inherit;background-color:rgb(238,238,238)"><th style="box-sizing:inherit;padding:8px 10px;text-align:left;background-color:rgb(255,255,255);border-top:1px solid rgb(221,221,221);border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">物体領域候補の抽出</th><th style="box-sizing:inherit;padding:8px 10px;text-align:left;background-color:rgb(255,255,255);border-top:1px solid rgb(221,221,221);border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">物体領域候補の物体認識</th><th style="box-sizing:inherit;padding:8px 10px;text-align:left;background-color:rgb(255,255,255);border-top:1px solid rgb(221,221,221);border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">検出領域の絞り込み</th></tr></thead><tbody style="box-sizing:inherit"><tr style="box-sizing:inherit;background-color:rgb(238,238,238)"><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">スライディングウィンドウ方式(非効率だが単純)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">HOG特徴 + 線形SVM</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">NMS(IoUが用いられる)</td></tr><tr style="box-sizing:inherit"><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">選択的検索法(効率的)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">DPM(物体の変形を考慮)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)"></td></tr><tr style="box-sizing:inherit;background-color:rgb(238,238,238)"><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">分岐限定法(効率的)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">ホグ特徴 + LatentSVM(フィルター位置考慮)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)"></td></tr><tr style="box-sizing:inherit"><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">attentional cascade(高速な物体検出ただし分類器が必要)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">Exampler-SVM(個々の物体に対して分類を行う)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)"></td></tr><tr style="box-sizing:inherit;background-color:rgb(238,238,238)"><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)"></td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)">矩形特徴 + Adaboost(低コストながら分類性能高い)</td><td style="box-sizing:inherit;padding:8px 10px;border-bottom:1px solid rgb(204,204,204);border-right:1px solid rgb(204,204,204)"></td></tr></tbody></table><hr style="box-sizing:inherit;margin:3em 0px;padding:0px;border:0px;height:2px;background-color:rgb(221,221,221)"><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/4f399b17d968854c2b0be1ef522d7af702752d1e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f63646335366135382d666264652d656236312d333036302d3162336163356638376239372e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/4f399b17d968854c2b0be1ef522d7af702752d1e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f63646335366135382d666264652d656236312d333036302d3162336163356638376239372e706e67" alt="Screen Shot 2017-06-22 at 10.26.32.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">物体領域候補の物体認識における良い負例の集め方は分類器が誤って分類した負例をキャッシュとしてためておき、分類できた負例の候補は外していくことによって効率よく集めて学習することができます。</p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-深層学習による物体検出" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E3%81%AB%E3%82%88%E3%82%8B%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>深層学習による物体検出</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">深層学習による物体検出は上記の手法に比べて良質な特徴が抽出可能なCNN特徴が使える点が利点になります。では実際に深層学習による物体検出のフローを見てみましょう。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">ここからは小ウインドウのことをバウンディングボックスと表します。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-r-cnn-region" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#r-cnn-region" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>R-CNN (Region)</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/c5d4fd051f2c4f8614a7079cb086a21242180cc3/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f65623964663062632d616134352d326430382d313134382d3335303465336637323636332e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/c5d4fd051f2c4f8614a7079cb086a21242180cc3/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f65623964663062632d616134352d326430382d313134382d3335303465336637323636332e706e67" alt="Screen Shot 2017-06-22 at 10.55.35.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">バウンディングボックスの回帰の手法ですが提案したバウンディングボックスを</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-1-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.539em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.192em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-2" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-3" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-4" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-5" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-6" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-7" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-8" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-9" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-10" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-11" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-12" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-13" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-14" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-15" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-16" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-17" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-18" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-19" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-20" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-21" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-22" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-23" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-24" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-25" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-26" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-27" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-28" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-29" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">T<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:152.609px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">r→</span>=(rx,ry,rw,rh)T</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">真のバウンディングボックス</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-2-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-30" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.809em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.462em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-31" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-32" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-33" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-34" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-35" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-36" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-37" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-38" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-39" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-40" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-41" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-42" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-43" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-44" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-45" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-46" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-47" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-48" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-49" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.08em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-50" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-51" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-52" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-53" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-54" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-55" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-56" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-57" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-58" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">T<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:156.938px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">g→</span>=(gx,gy,gw,gh)T</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">真のバウンディングボックスを得るためのモデルのパラメータWは下記で解きます。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-3-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-59" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:22.794em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:19.615em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-60" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-61" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-62" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-63" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-64" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-65" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-66" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">W<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-67" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-68" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mi" id="gmail-MathJax-Span-69" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span class="gmail-mi" id="gmail-MathJax-Span-70" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-71" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-72" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-73" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">i</span><span class="gmail-msubsup" id="gmail-MathJax-Span-74" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-75" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">n</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-76" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-77" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-78" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-79" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-80" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-81" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.326em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-82" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-munderover" id="gmail-MathJax-Span-83" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.457em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-84" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size2">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-85" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-86" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-87" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span><span class="gmail-mo" id="gmail-MathJax-Span-88" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">=</span><span class="gmail-mn" id="gmail-MathJax-Span-89" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">1</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-90" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-91" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-92" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-93" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-94" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-95" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-96" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-97" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-98" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-99" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-100" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-101" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-102" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-103" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-104" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.619em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-105" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-106" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-107" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-108" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">W<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-109" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-110" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">T<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-111" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">f<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-112" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-113" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-114" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-115" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-116" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-117" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-118" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-119" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-120" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-121" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.811em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-122" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-123" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">2</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-124" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mi" id="gmail-MathJax-Span-125" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">λ</span><span class="gmail-mo" id="gmail-MathJax-Span-126" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∥</span><span class="gmail-texatom" id="gmail-MathJax-Span-127" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-128" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-129" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-130" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">W<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-131" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-132" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.134em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-133" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">∥</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-134" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">2</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-135" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-136" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-137" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">F<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.434em;line-height:normal;overflow:hidden;width:0px;height:3.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:364.703px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">W→</span>=argmin<span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">w→</span></span>∑<span class="gmail-MJX-TeXAtom-ORD">n=1</span><span class="gmail-MJX-TeXAtom-ORD">N</span>(<span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">t→</span>n−<span class="gmail-MJX-TeXAtom-ORD">W→</span>Tf(<span class="gmail-MJX-TeXAtom-ORD">r→</span>n)</span>)2+λ∥<span class="gmail-MJX-TeXAtom-ORD">W→</span>∥<span class="gmail-MJX-TeXAtom-ORD">F</span>2</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">ここで目標となる回帰のための値</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-4-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-138" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.216em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:7.923em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-139" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-140" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-141" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-142" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-143" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-144" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-145" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-146" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-147" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-148" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-149" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-150" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-151" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-152" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-153" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.811em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-154" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-155" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-156" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-157" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-158" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-159" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-160" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-161" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-162" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-163" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-164" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-165" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-166" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">T<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.566em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:147.453px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">t→</span>=(tx,ty,tw,th)T</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">tは先ほど定義した真のバウンディングボックスgと提案したバウンディングボックスrを使用する</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-5-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-167" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:34.755em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:29.96em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-168" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-169" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-170" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-171" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-172" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-173" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-174" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-175" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-176" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-177" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-178" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-179" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-180" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-181" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-182" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-183" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-texatom" id="gmail-MathJax-Span-184" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-185" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-186" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-187" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-188" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-189" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-190" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-191" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.811em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-192" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-193" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-194" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-195" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-196" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-197" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-198" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-199" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-200" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-201" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-202" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-203" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-texatom" id="gmail-MathJax-Span-204" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-205" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-206" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-207" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-208" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-209" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-210" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-211" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-212" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-213" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-214" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mi" id="gmail-MathJax-Span-215" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-216" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-217" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-218" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-219" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.08em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-220" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-221" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-222" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-223" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-224" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-225" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-226" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-227" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-228" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-229" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-230" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-231" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-232" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-233" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mi" id="gmail-MathJax-Span-234" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-235" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-236" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-237" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-238" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-239" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-240" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-241" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-242" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-243" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-244" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-245" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-246" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-247" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-248" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:556.078px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">tx=(gx−rx)<span class="gmail-MJX-TeXAtom-ORD">/</span>rw,ty=(gy−ry)<span class="gmail-MJX-TeXAtom-ORD">/</span>rh,tw=log(gw<span class="gmail-MJX-TeXAtom-ORD">/</span>rw),th=log(gh<span class="gmail-MJX-TeXAtom-ORD">/</span>rh),</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">上記のように定義します。上記のようにしている理由は下記のように推測されます。推測の理由は書籍になかったのと調査してないからです。気になる方は調べていただけると助かります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">バウンディングボックスのサイズは様々な種類であるため中央位置は差分の値から幅の値の比率によって算出する。<br style="box-sizing:inherit">幅の値は真の値との比率で算出。ただし値が極端に小さくなったり大きくなる可能性があるため対数によってその影響を減らす。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">上記のために直接的に値を使用せずに工夫していると思われます。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-fast-r-cnn" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#fast-r-cnn" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Fast R-CNN</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">R-CNNは物体領域ごとにCNNをする必要がありました。Fast R-CNNはCNN特徴は画像全体を使う点が異なります。その際に切り取った画像領域ごとにCNN特徴量が異なるのでRoIプーリングによって固定長の特徴量に変換する必要がある点が異なります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/26735433f8f84e59909a79dd79e87e5fa5f663d7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f33373161393466662d313063352d376233652d616332392d3564656538303038323333362e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/26735433f8f84e59909a79dd79e87e5fa5f663d7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f33373161393466662d313063352d376233652d616332392d3564656538303038323333362e706e67" alt="Screen Shot 2017-06-22 at 11.24.35.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">RoIプーリングとは下記の10ページを参照</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://www.slideshare.net/takashiabe338/fast-rcnnfaster-rcnn" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">論文紹介: Fast R-CNN&Faster R-CNN</a></p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-学習方法" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92%E6%96%B9%E6%B3%95" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>学習方法</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">クラス認識とバウンディングボックスへの回帰を同時学習するためマルチタスク損失を最適化する方法を取ります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">各正解バウンディングボックスにR-CNNで求めた時に使用した正解位置tとラベルuが付与されているとします。マルチタスク損失は下記の式で表します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">クラスの事後確率</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-6-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-249" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.809em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.462em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-250" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-251" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-252" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-253" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-254" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-255" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-256" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-257" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-258" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-259" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-260" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-261" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-262" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">0</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-263" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-264" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-265" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-266" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">1</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-267" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mo" id="gmail-MathJax-Span-268" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">.</span><span class="gmail-mo" id="gmail-MathJax-Span-269" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">.</span><span class="gmail-mo" id="gmail-MathJax-Span-270" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">.</span><span class="gmail-msubsup" id="gmail-MathJax-Span-271" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-272" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-273" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-274" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-275" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-276" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-277" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">T<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.441em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:156.938px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">p→</span>=(p0,p1,...pcN)T</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">バウンディングボックスの相対的な位置と大きさ</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-7-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-278" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.755em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.408em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-279" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-280" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-281" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-282" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-283" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-284" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-285" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-286" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-287" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-288" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-289" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-290" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-291" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-292" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-293" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-294" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-295" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-296" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-297" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.08em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-298" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-299" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-300" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-301" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-302" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-303" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-304" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-305" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-306" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">T<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:156.078px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">v→</span>=(vx,vy,vw,vh)T</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">上記を踏まえて</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-8-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-307" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:22.201em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:19.13em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-308" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-309" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-310" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-311" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">J<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-312" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-313" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-314" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-315" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-316" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-317" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-318" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-319" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">u</span><span class="gmail-mo" id="gmail-MathJax-Span-320" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-texatom" id="gmail-MathJax-Span-321" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-322" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-323" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-324" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-325" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-326" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-texatom" id="gmail-MathJax-Span-327" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-328" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-329" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-330" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-331" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-332" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-333" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msubsup" id="gmail-MathJax-Span-334" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.457em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-335" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">J<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-336" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-337" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-338" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-339" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-340" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">s</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-341" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-342" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-343" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-344" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-345" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-346" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-347" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-348" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">u</span><span class="gmail-mo" id="gmail-MathJax-Span-349" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-350" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mi" id="gmail-MathJax-Span-351" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">λ</span><span class="gmail-mo" id="gmail-MathJax-Span-352" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">[</span><span class="gmail-mi" id="gmail-MathJax-Span-353" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">u</span><span class="gmail-mo" id="gmail-MathJax-Span-354" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal">=</span></span><span class="gmail-mn" id="gmail-MathJax-Span-355" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-356" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">]</span><span class="gmail-msubsup" id="gmail-MathJax-Span-357" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.511em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-358" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">J<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-359" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-360" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-361" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-362" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-363" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-364" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-365" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-366" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-367" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-368" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-369" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-370" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-texatom" id="gmail-MathJax-Span-371" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-372" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-373" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.488em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-374" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-375" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-376" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:355.203px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">J(<span class="gmail-MJX-TeXAtom-ORD">p→</span>,u,<span class="gmail-MJX-TeXAtom-ORD">v→</span>,<span class="gmail-MJX-TeXAtom-ORD">t→</span>)=J<span class="gmail-MJX-TeXAtom-ORD">cls</span>(<span class="gmail-MJX-TeXAtom-ORD">p→</span>,u)+λ[u>=1]J<span class="gmail-MJX-TeXAtom-ORD">loc</span>(<span class="gmail-MJX-TeXAtom-ORD">v→</span>,<span class="gmail-MJX-TeXAtom-ORD">t→</span>)</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">J_clsはクラス認識の損失でJ_locはバウンディングボックスの回帰の損失です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">J_clsは真のクラスuに対する事後確率p^uの負の対数で計算します。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-9-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-377" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.809em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.462em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-378" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-379" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-380" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-381" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.457em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-382" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">J<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-383" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-384" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-385" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-386" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-387" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">s</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-388" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-389" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-390" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-391" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-392" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;height:0.003em;width:0.488em;overflow:hidden"></span><span class="gmail-mo" id="gmail-MathJax-Span-393" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">⃗ <span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0.003em;line-height:normal;height:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-394" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-395" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">u</span><span class="gmail-mo" id="gmail-MathJax-Span-396" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-397" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-398" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mi" id="gmail-MathJax-Span-399" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">log</span><span class="gmail-mo" id="gmail-MathJax-Span-400" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-texatom" id="gmail-MathJax-Span-401" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-402" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-403" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-404" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-405" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">u</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:156.938px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">J<span class="gmail-MJX-TeXAtom-ORD">cls</span>(<span class="gmail-MJX-TeXAtom-ORD">p→</span>,u)=−log<span class="gmail-MJX-TeXAtom-ORD">pu</span></span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">J_locは</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-10-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-406" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:16.651em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:14.335em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-407" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-408" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-409" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-410" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.511em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-411" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">J<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-412" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-413" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-414" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-415" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-416" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-417" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-munderover" id="gmail-MathJax-Span-418" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.666em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-419" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size2">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-420" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-421" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-422" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mo" id="gmail-MathJax-Span-423" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">∈</span><span class="gmail-texatom" id="gmail-MathJax-Span-424" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-425" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-426" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">{</span><span class="gmail-mi" id="gmail-MathJax-Span-427" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-428" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-429" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-430" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-431" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span class="gmail-mo" id="gmail-MathJax-Span-432" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-433" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-434" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">}</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-435" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span class="gmail-mi" id="gmail-MathJax-Span-436" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-437" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-438" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-439" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span class="gmail-msubsup" id="gmail-MathJax-Span-440" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.511em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-441" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-442" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-443" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-444" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">L</span><span class="gmail-mn" id="gmail-MathJax-Span-445" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">1</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-446" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-447" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.703em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-448" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-449" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-450" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-451" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.811em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-452" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">v</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-453" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-454" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.684em;line-height:normal;overflow:hidden;width:0px;height:2.878em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:266.406px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">J<span class="gmail-MJX-TeXAtom-ORD">loc</span>=∑<span class="gmail-MJX-TeXAtom-ORD">i∈<span class="gmail-MJX-TeXAtom-ORD">{x,y,w,h</span>}</span>smooth<span class="gmail-MJX-TeXAtom-ORD">L1</span>(ti−vi)</span></span></span></div></div><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-11-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-455" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:19.938em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:17.19em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-456" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-457" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-458" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-459" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span class="gmail-mi" id="gmail-MathJax-Span-460" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-461" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-462" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-463" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span class="gmail-msubsup" id="gmail-MathJax-Span-464" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.511em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-465" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-466" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-467" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-468" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">L</span><span class="gmail-mn" id="gmail-MathJax-Span-469" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">1</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-470" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-471" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-472" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-473" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mrow" id="gmail-MathJax-Span-474" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-475" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Size3">{</span></span><span class="gmail-mtable" id="gmail-MathJax-Span-476" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.27em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.613em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-477" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-478" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-479" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0.5</span><span class="gmail-msubsup" id="gmail-MathJax-Span-480" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-481" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-482" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">2</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-498" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-499" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-500" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-501" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-502" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-503" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-texatom" id="gmail-MathJax-Span-504" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-505" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-506" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-507" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mn" id="gmail-MathJax-Span-508" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0.5</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:4.636em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-483" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-484" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-485" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-486" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">f<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-487" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-488" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-489" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-490" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-491" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-texatom" id="gmail-MathJax-Span-492" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-493" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-494" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-495" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main"><</span><span class="gmail-mn" id="gmail-MathJax-Span-496" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-497" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-509" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-510" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-511" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-512" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-513" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">h</span><span class="gmail-mi" id="gmail-MathJax-Span-514" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-515" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-516" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">w</span><span class="gmail-mi" id="gmail-MathJax-Span-517" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-518" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span class="gmail-mi" id="gmail-MathJax-Span-519" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">e</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-520" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.451em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.247em;line-height:normal;overflow:hidden;width:0px;height:3.066em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:319px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">smooth<span class="gmail-MJX-TeXAtom-ORD">L1</span>(x)={0.5x2if(<span class="gmail-MJX-TeXAtom-ORD">|</span>x<span class="gmail-MJX-TeXAtom-ORD">|</span><1)<span class="gmail-MJX-TeXAtom-ORD">|</span>x<span class="gmail-MJX-TeXAtom-ORD">|</span>−0.5otherwise</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">smooth関数によって相対的な位置の差が1より小さい時は大きくなるようにそれ以外の時は0.5の中央値で引いて極端に大きな値にならないように補正しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">計算の効率化</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">全結合が画像ごとに処理されるため一つの画像でミニバッチが動作するようにして効率よく特徴マップを使用できるようにします。具体的にはN(画像枚数)を小さいくしてR(バウンディングボックスの数)を大きくします。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-faster-r-cnn" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#faster-r-cnn" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Faster R-CNN</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">Fast R-CNNでは物体領域候補を別モジュール(選択的検出法)で計算する必要がありました。Faster R-CNNではRPNという特徴量マップから物体領域を推定する領域ネットワークを作りFast R-CNNと統合するやり方を取っています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/c6d8e990cecda9216ef799ad236a17b2ade3dec3/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f61613963663965392d613139382d663830322d396365662d3463633937326163626235642e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/c6d8e990cecda9216ef799ad236a17b2ade3dec3/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f61613963663965392d613139382d663830322d396365662d3463633937326163626235642e706e67" alt="Screen Shot 2017-06-22 at 12.10.38.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">RPNによってスコア付きのバウンディングボックスを提案します。<br style="box-sizing:inherit">RPNではバウデンィングボックスのパラメータを学習する部分と物体の有無を予測する分離ネットワークで構成されておりこれを結合してRPNを実現しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">あらかじめ形状が決められたK個のアンカーボックスを用意しておきます。入力の局所領域(これはエッジの算出などで導出)を中心とした標準的なバウンディングボックスを用意しておきます。この辺はハイパーパラメータ的な要素。<br style="box-sizing:inherit">バウンディングボックスの予測は各アンカーボックスからの相対的な位置とアスペクト比を含んだ4k次元のベクトルを出力します。(x, y, w, h) * k</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://ja.wikipedia.org/wiki/%E3%82%A2%E3%82%B9%E3%83%9A%E3%82%AF%E3%83%88%E6%AF%94" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">アスペクト比</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">分類ネットワークは物体の有無を2クラスで判断するので2k次元のベクトルを出力します。(有り,無し) * k</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">Fast R-CNNと同様のマルチタスク損失を最小化することによって最適なバウンディングボックスを導出します。<br style="box-sizing:inherit">RPNとFast R-CNNを交互に学習することでFaster R-CNNのネットワーク全体を学習します。まずRPNのみで学習して最適なバウンディングボックスを導出できるようにしてからR-CNNを学習して、そのあとにFast R-CNNを学習します。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-yolo-you-only-look-once" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#yolo-you-only-look-once" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>YOLO (You only look once)</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">ここまでは良いバウンディングボックスを求めることが主題でしたが直接的に物体検出をしようという試みが有ります。それがYOLOです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/027e43bb64027c21ccd4083a3de7fafb1b50f865/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f34633466616664612d313532652d343262362d643461382d6666663133666131343336612e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/027e43bb64027c21ccd4083a3de7fafb1b50f865/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f34633466616664612d313532652d343262362d643461382d6666663133666131343336612e706e67" alt="Screen Shot 2017-06-22 at 12.43.34.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">YOLOの手順</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: 入力画像をS*Sの領域に分割<br style="box-sizing:inherit">2: 領域内の物体のクラス確率を導出<br style="box-sizing:inherit">3: B個(ハイパーパラメータ)のバウンディングボックスのパラメータ(x, y, h, w)と信頼度を計算</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">信頼度</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-12-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-521" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:11.533em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.916em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-522" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-523" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-524" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-525" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">q<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-526" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msubsup" id="gmail-MathJax-Span-527" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-528" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">P<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-529" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-530" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-531" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">O</span><span class="gmail-mi" id="gmail-MathJax-Span-532" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">b</span><span class="gmail-mi" id="gmail-MathJax-Span-533" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">j</span><span class="gmail-mo" id="gmail-MathJax-Span-534" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-535" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">×</span><span class="gmail-mi" id="gmail-MathJax-Span-536" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">I<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-537" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-msubsup" id="gmail-MathJax-Span-538" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:2.535em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-539" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">U<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-540" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-541" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-542" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-543" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-544" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">u</span><span class="gmail-mi" id="gmail-MathJax-Span-545" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-546" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-547" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-548" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-549" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span class="gmail-mi" id="gmail-MathJax-Span-550" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-551" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-552" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.622em;line-height:normal;overflow:hidden;width:0px;height:1.628em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:184.516px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">q=Pr(Obj)×IoU<span class="gmail-MJX-TeXAtom-ORD">pred</span><span class="gmail-MJX-TeXAtom-ORD">truth</span></span></span></span></div></div><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-13-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-553" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:4.098em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.505em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-554" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-555" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-556" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-557" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">I<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-558" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-msubsup" id="gmail-MathJax-Span-559" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:2.535em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-560" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">U<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-561" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-562" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-563" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-564" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-565" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">u</span><span class="gmail-mi" id="gmail-MathJax-Span-566" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-567" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-568" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-569" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-570" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span class="gmail-mi" id="gmail-MathJax-Span-571" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-572" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-573" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.622em;line-height:normal;overflow:hidden;width:0px;height:1.628em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:65.5625px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">IoU<span class="gmail-MJX-TeXAtom-ORD">pred</span><span class="gmail-MJX-TeXAtom-ORD">truth</span></span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">は予測と正解のバウンディングボックスの一致度です。<br style="box-sizing:inherit">物体検出には物体クラス確率と各バウンディングボックスの信頼度の積を用います。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-14-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-574" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:16.328em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:14.065em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-575" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-576" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-577" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-578" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-579" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">P<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-580" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-581" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-582" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-583" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">C<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-584" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-585" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-586" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-587" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-588" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">O</span><span class="gmail-mi" id="gmail-MathJax-Span-589" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">b</span><span class="gmail-mi" id="gmail-MathJax-Span-590" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">j</span><span class="gmail-mo" id="gmail-MathJax-Span-591" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-592" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">×</span><span class="gmail-msubsup" id="gmail-MathJax-Span-593" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-594" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">P<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-595" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-596" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-597" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">O</span><span class="gmail-mi" id="gmail-MathJax-Span-598" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">b</span><span class="gmail-mi" id="gmail-MathJax-Span-599" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">j</span><span class="gmail-mo" id="gmail-MathJax-Span-600" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-601" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">×</span><span class="gmail-mi" id="gmail-MathJax-Span-602" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">I<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-603" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-msubsup" id="gmail-MathJax-Span-604" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:2.535em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-605" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">U<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-606" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-607" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-608" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-609" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-610" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">u</span><span class="gmail-mi" id="gmail-MathJax-Span-611" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-612" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-613" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-614" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-615" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span class="gmail-mi" id="gmail-MathJax-Span-616" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-617" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-618" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.622em;line-height:normal;overflow:hidden;width:0px;height:1.628em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:261.234px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">Pr(Ci<span class="gmail-MJX-TeXAtom-ORD">|</span>Obj)×Pr(Obj)×IoU<span class="gmail-MJX-TeXAtom-ORD">pred</span><span class="gmail-MJX-TeXAtom-ORD">truth</span></span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">YOLOのネットワークは下記になります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/974a8bce83b7533b49019a0d0ba9751da5f3cb78/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f62643137373363312d303863612d373637642d666635632d6533306336653364616431642e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/974a8bce83b7533b49019a0d0ba9751da5f3cb78/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f62643137373363312d303863612d373637642d666635632d6533306336653364616431642e706e67" alt="Screen Shot 2017-06-22 at 12.57.23.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">出力はS*Sに分割した画像領域と(x,y,h,w)と信頼度を含むバウンディングボックスの数とクラス数になります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">信頼度は下記の式で表します。バウンディングボックスの一致度を測ります。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-15-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-619" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:11.263em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.701em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-620" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-621" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-622" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-623" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">I<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-624" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-625" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">U<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-626" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mfrac" id="gmail-MathJax-Span-627" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:6.414em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-628" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-629" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span class="gmail-mi" id="gmail-MathJax-Span-630" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-631" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-632" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span class="gmail-mo" id="gmail-MathJax-Span-633" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-634" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-635" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">R</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-636" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-637" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size1">⋂</span><span class="gmail-msubsup" id="gmail-MathJax-Span-638" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-639" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">R</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-640" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-641" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-642" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-643" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span class="gmail-mi" id="gmail-MathJax-Span-644" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-645" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-646" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span class="gmail-mo" id="gmail-MathJax-Span-647" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-648" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-649" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">R</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-650" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-651" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size1">⋃</span><span class="gmail-msubsup" id="gmail-MathJax-Span-652" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-653" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">R</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-654" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-655" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:6.414em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.247em;line-height:normal;overflow:hidden;width:0px;height:3.066em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:180.203px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">IoU=area(Rp⋂Rg)area(Rp⋃Rg)</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/4dbf7564b8f5c2a248505053bbd6b4f5b56755ee/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f38346265323938362d373162302d396363632d386631652d3636343038363132336333632e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/4dbf7564b8f5c2a248505053bbd6b4f5b56755ee/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f38346265323938362d373162302d396363632d386631652d3636343038363132336333632e706e67" alt="Screen Shot 2017-06-22 at 13.02.20.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-ssd" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#ssd" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>SSD</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">書籍には有りませんでしたが手法として有用なSSDについてもふれておきます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">・速度比較</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/371b00fa8612890b80cbb49809cf3fa12a7a6d88/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f39303138636530662d303933322d366232662d666239372d3365363530646335626465312e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/371b00fa8612890b80cbb49809cf3fa12a7a6d88/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f39303138636530662d303933322d366232662d666239372d3365363530646335626465312e706e67" alt="Screen Shot 2017-06-30 at 10.53.05.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">・精度比較</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">SSD512とSSD300の違いは入力画像のサイズ</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/9e8452ccb7e06ca0d9521339b94d9ca8194f932f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f38383261653539322d376430622d373838382d336634632d6164396263373538623535302e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/9e8452ccb7e06ca0d9521339b94d9ca8194f932f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f38383261653539322d376430622d373838382d336634632d6164396263373538623535302e706e67" alt="Screen Shot 2017-06-30 at 10.54.04.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">利点</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">YOLOと同様にシンプルなネットワーク構成</li><li style="box-sizing:inherit;margin:0px;padding:0px">高速</li><li style="box-sizing:inherit;margin:0px;padding:0px">精度が高い</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">利点の理由</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">アスペクト比に応じた出力層を用意して学習させることによって画像のスケールに影響されないモデルの提供</li><li style="box-sizing:inherit;margin:0px;padding:0px">End to Endのシンプルなモデルにより余分な処理が不要な分、高速</li></ul><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-modelの比較" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#model%E3%81%AE%E6%AF%94%E8%BC%83" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>modelの比較</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/e18de3b77ab5bc6eec333efd926bd0cc16d18ae0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f63386234343761362d396264352d336135632d346430372d3364663033356564303462642e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/e18de3b77ab5bc6eec333efd926bd0cc16d18ae0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f63386234343761362d396264352d336135632d346430372d3364663033356564303462642e706e67" alt="Screen Shot 2017-06-26 at 10.19.02.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">End to EndのモデルのYOLOとSSDを比較したのが上図です。<br style="box-sizing:inherit">SSDの場合はアスペクト比の異なる特徴マップを複数用意してそれを最終層に入力することで画像の解像度が異なる場合でも適用できるようにしています。</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-出力層について" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%87%BA%E5%8A%9B%E5%B1%A4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>出力層について</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/9863e3e1dc1d5450cde5d8bb88b79b0a89173bd2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f66306263626237362d653430662d636531652d353966642d6661373864623733636330392e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/9863e3e1dc1d5450cde5d8bb88b79b0a89173bd2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f66306263626237362d653430662d636531652d353966642d6661373864623733636330392e706e67" alt="Screen Shot 2017-06-26 at 10.17.24.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">図中の8732の意味はボウンディングボックスの数です。数が多ければ精度が上がりますが速度が下がるのでトレードオフの関係になります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">出力層はクラス数Cとオフセット(x, y, h, w)、それらに紐づいたバウンディングボックスの数kそれらを各特徴マップごとに用意する必要があるので特徴マップのサイズがm*nの場合は下記が出力層のサイズになります。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-16-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-656" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:5.714em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:4.906em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-657" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-658" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-659" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-660" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-661" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span class="gmail-mo" id="gmail-MathJax-Span-662" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mn" id="gmail-MathJax-Span-663" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">4</span><span class="gmail-mo" id="gmail-MathJax-Span-664" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mi" id="gmail-MathJax-Span-665" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">k</span><span class="gmail-mi" id="gmail-MathJax-Span-666" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-667" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">n</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:91.4219px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">(c+4)kmn</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">損失関数は物体の位置のズレとクラスの分類のズレの2点を求めることになります。Nはマッチしたデフォルトのバウンディングボックスの数(0の場合は損失が無限大に発散するため0を設定)。αはハイパーパラメータクラス識別かオフセットの回帰の重要性を制御)<br style="box-sizing:inherit">ここでxは真のデータjのボックスと予測データのボックスiが一致すれば1、一致しない場合は0(pはクラス)</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-17-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-668" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:4.582em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.936em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-669" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-670" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-671" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-672" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-673" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-674" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-675" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-676" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-677" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-678" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-679" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-texatom" id="gmail-MathJax-Span-680" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-681" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-682" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-683" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mn" id="gmail-MathJax-Span-684" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0</span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.559em;line-height:normal;overflow:hidden;width:0px;height:1.566em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:73.2969px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">x<span class="gmail-MJX-TeXAtom-ORD">ij</span>p=<span class="gmail-MJX-TeXAtom-ORD">1,0</span></span></span></span></div></div><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-18-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-685" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:22.578em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:19.453em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-686" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-687" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-688" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-689" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span class="gmail-mo" id="gmail-MathJax-Span-690" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-691" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-692" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-693" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span class="gmail-mo" id="gmail-MathJax-Span-694" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-695" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span class="gmail-mo" id="gmail-MathJax-Span-696" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-697" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-698" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-699" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mn" id="gmail-MathJax-Span-700" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-texatom" id="gmail-MathJax-Span-701" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-702" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-703" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-704" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.11em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-705" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-706" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:2.212em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-707" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-708" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-709" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-710" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-711" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-712" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span><span class="gmail-mi" id="gmail-MathJax-Span-713" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">f<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-714" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-715" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-716" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-717" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span class="gmail-mo" id="gmail-MathJax-Span-718" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-719" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mi" id="gmail-MathJax-Span-720" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">α</span><span class="gmail-msubsup" id="gmail-MathJax-Span-721" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.619em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-722" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-723" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-724" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-725" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-726" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-727" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-728" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-729" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-730" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-731" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span class="gmail-mo" id="gmail-MathJax-Span-732" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-733" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-734" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-735" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.434em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:361.234px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">L(x,c,l,g)=1<span class="gmail-MJX-TeXAtom-ORD">/</span>N(L<span class="gmail-MJX-TeXAtom-ORD">conf</span>(x,c)+αL<span class="gmail-MJX-TeXAtom-ORD">loc</span>(x,l,g))</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">位置に関する損失関数</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">lは予測した位置</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-19-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-736" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:25.057em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:21.608em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-737" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-738" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-739" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-740" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.619em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-741" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-742" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-743" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-744" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">l</span><span class="gmail-mi" id="gmail-MathJax-Span-745" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-746" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-747" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-748" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-749" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-750" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span class="gmail-mo" id="gmail-MathJax-Span-751" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-752" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-753" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-754" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-munderover" id="gmail-MathJax-Span-755" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.942em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-756" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size2">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-757" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-758" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-759" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mo" id="gmail-MathJax-Span-760" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">∈</span><span class="gmail-mi" id="gmail-MathJax-Span-761" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">P<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-762" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-763" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">s</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-764" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-munderover" id="gmail-MathJax-Span-765" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.99em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-766" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size2">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-767" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-768" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-769" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mo" id="gmail-MathJax-Span-770" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">∈</span><span class="gmail-texatom" id="gmail-MathJax-Span-771" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-772" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-773" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-774" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-775" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-776" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-777" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-778" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-779" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span><span class="gmail-mo" id="gmail-MathJax-Span-780" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-781" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-782" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-783" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-784" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-785" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-786" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-787" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-788" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-789" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-790" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-791" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">s</span><span class="gmail-mi" id="gmail-MathJax-Span-792" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">m</span><span class="gmail-mi" id="gmail-MathJax-Span-793" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">o</span><span class="gmail-mi" id="gmail-MathJax-Span-794" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">o</span><span class="gmail-mi" id="gmail-MathJax-Span-795" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">t</span><span class="gmail-msubsup" id="gmail-MathJax-Span-796" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.404em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-797" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-798" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-799" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-800" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">L</span><span class="gmail-mn" id="gmail-MathJax-Span-801" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">1</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-802" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-803" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-804" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">l</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-805" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-806" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-807" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-808" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.242em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-809" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-810" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-811" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-812" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-813" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-814" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-815" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-816" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.622em;line-height:normal;overflow:hidden;width:0px;height:3.691em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:400.906px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">L<span class="gmail-MJX-TeXAtom-ORD">loc</span>(x,l,g)=∑<span class="gmail-MJX-TeXAtom-ORD">i∈Pos</span>N∑<span class="gmail-MJX-TeXAtom-ORD">m∈<span class="gmail-MJX-TeXAtom-ORD">cx,cy,w,h</span></span>x<span class="gmail-MJX-TeXAtom-ORD">ij</span>k<span class="gmail-MJX-TeXAtom-ORD">smooth<span class="gmail-MJX-TeXAtom-ORD">L1</span></span>(lim−<span class="gmail-MJX-TeXAtom-ORD">g^</span>jm)</span></span></span></div></div><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-20-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-817" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:19.938em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:17.19em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-818" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-819" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-820" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-821" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span class="gmail-mi" id="gmail-MathJax-Span-822" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-823" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-824" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-825" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span class="gmail-msubsup" id="gmail-MathJax-Span-826" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.511em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-827" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-828" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-829" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-830" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">L</span><span class="gmail-mn" id="gmail-MathJax-Span-831" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">1</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-832" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-833" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-834" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-835" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mrow" id="gmail-MathJax-Span-836" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-837" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Size3">{</span></span><span class="gmail-mtable" id="gmail-MathJax-Span-838" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.27em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.613em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-839" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-840" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-841" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0.5</span><span class="gmail-msubsup" id="gmail-MathJax-Span-842" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-843" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-844" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">2</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-860" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-861" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-862" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-863" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-864" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-865" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-texatom" id="gmail-MathJax-Span-866" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-867" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-868" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-869" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mn" id="gmail-MathJax-Span-870" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">0.5</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:4.636em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-845" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-846" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-847" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-848" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">f<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mo" id="gmail-MathJax-Span-849" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-texatom" id="gmail-MathJax-Span-850" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-851" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-852" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-853" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-texatom" id="gmail-MathJax-Span-854" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-855" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-856" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">|</span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-857" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main"><</span><span class="gmail-mn" id="gmail-MathJax-Span-858" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-859" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mtd" id="gmail-MathJax-Span-871" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-872" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-873" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-874" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">t</span><span class="gmail-mi" id="gmail-MathJax-Span-875" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">h</span><span class="gmail-mi" id="gmail-MathJax-Span-876" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-877" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">r</span><span class="gmail-mi" id="gmail-MathJax-Span-878" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">w</span><span class="gmail-mi" id="gmail-MathJax-Span-879" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-880" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span class="gmail-mi" id="gmail-MathJax-Span-881" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">e</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-882" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.451em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.247em;line-height:normal;overflow:hidden;width:0px;height:3.066em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:319px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">smooth<span class="gmail-MJX-TeXAtom-ORD">L1</span>(x)={0.5x2if(<span class="gmail-MJX-TeXAtom-ORD">|</span>x<span class="gmail-MJX-TeXAtom-ORD">|</span><1)<span class="gmail-MJX-TeXAtom-ORD">|</span>x<span class="gmail-MJX-TeXAtom-ORD">|</span>−0.5otherwise</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">デフォルトのバウンディングボックスはd、真のバウンディングボックスはgで表し、真の値をバウンディングボックスのスケールに正規化すると</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-21-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-883" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:38.904em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:33.516em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-884" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-885" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-886" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-887" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.35em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-888" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-889" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-890" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-891" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-892" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-893" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-894" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-895" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-896" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-897" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-898" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-899" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-900" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.296em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-901" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-902" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-903" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-904" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-905" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-906" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-907" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-908" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.35em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-909" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-910" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-911" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-912" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-913" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-914" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-915" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-texatom" id="gmail-MathJax-Span-916" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-917" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-918" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-919" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.134em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-920" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-921" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-922" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-923" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-924" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-925" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-926" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.296em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-927" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-928" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-929" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-930" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-931" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-932" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-933" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-934" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-935" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-936" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-937" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-938" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-939" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.242em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-940" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-941" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-942" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-943" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-944" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-945" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-946" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-947" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.296em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-948" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-949" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-950" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-951" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-952" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">y<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-953" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-954" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-texatom" id="gmail-MathJax-Span-955" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-956" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-957" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-958" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.08em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-959" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-960" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-961" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-962" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-963" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-964" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-965" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.134em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-966" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-967" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-968" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-969" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-970" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-971" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-972" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-973" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-974" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-975" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mi" id="gmail-MathJax-Span-976" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">log</span><span class="gmail-mo" id="gmail-MathJax-Span-977" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-mo" id="gmail-MathJax-Span-978" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-979" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.134em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-980" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-981" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-982" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-983" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-984" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-985" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-986" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-987" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-988" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.134em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-989" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-990" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-991" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-992" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">w</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-993" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-994" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-995" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-msubsup" id="gmail-MathJax-Span-996" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-997" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-998" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-999" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1000" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1001" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1002" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1003" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1004" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1005" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1006" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mi" id="gmail-MathJax-Span-1007" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">log</span><span class="gmail-mo" id="gmail-MathJax-Span-1008" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-mo" id="gmail-MathJax-Span-1009" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1010" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1011" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1012" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1013" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1014" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1015" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-1016" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1017" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1018" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-1019" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.08em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1020" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">d<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1021" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1022" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1023" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">h</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1024" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1025" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-1026" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.559em;line-height:normal;overflow:hidden;width:0px;height:1.753em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:622.453px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">g^</span>j<span class="gmail-MJX-TeXAtom-ORD">cx</span>=(gj<span class="gmail-MJX-TeXAtom-ORD">cx</span>−di<span class="gmail-MJX-TeXAtom-ORD">cx</span>)<span class="gmail-MJX-TeXAtom-ORD">/</span>di<span class="gmail-MJX-TeXAtom-ORD">w</span>,<span class="gmail-MJX-TeXAtom-ORD">g^</span>j<span class="gmail-MJX-TeXAtom-ORD">cy</span>=(gj<span class="gmail-MJX-TeXAtom-ORD">cy</span>−di<span class="gmail-MJX-TeXAtom-ORD">cy</span>)<span class="gmail-MJX-TeXAtom-ORD">/</span>di<span class="gmail-MJX-TeXAtom-ORD">h</span>,<span class="gmail-MJX-TeXAtom-ORD">g^</span>j<span class="gmail-MJX-TeXAtom-ORD">w</span>=log(gj<span class="gmail-MJX-TeXAtom-ORD">w</span><span class="gmail-MJX-TeXAtom-ORD">/</span>di<span class="gmail-MJX-TeXAtom-ORD">w</span>),<span class="gmail-MJX-TeXAtom-ORD">g^</span>j<span class="gmail-MJX-TeXAtom-ORD">h</span>=log(gj<span class="gmail-MJX-TeXAtom-ORD">h</span><span class="gmail-MJX-TeXAtom-ORD">/</span>di<span class="gmail-MJX-TeXAtom-ORD">h</span>),</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">クラスに関する損失関数</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">最初の項は各クラスの予測を2つ目の項は背景の予測を表している</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-22-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1027" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:24.248em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:20.908em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1028" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1029" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1030" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1031" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:2.212em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1032" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">L</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1033" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1034" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1035" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">c</span><span class="gmail-mi" id="gmail-MathJax-Span-1036" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-1037" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span><span class="gmail-mi" id="gmail-MathJax-Span-1038" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">f<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1039" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-1040" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span class="gmail-mo" id="gmail-MathJax-Span-1041" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mi" id="gmail-MathJax-Span-1042" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span class="gmail-mo" id="gmail-MathJax-Span-1043" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-1044" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mo" id="gmail-MathJax-Span-1045" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-munderover" id="gmail-MathJax-Span-1046" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.942em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1047" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size2">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1048" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1049" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1050" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mo" id="gmail-MathJax-Span-1051" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">∈</span><span class="gmail-mi" id="gmail-MathJax-Span-1052" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">P<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-1053" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">o</span><span class="gmail-mi" id="gmail-MathJax-Span-1054" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">s</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1055" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-1056" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1057" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1058" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1059" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1060" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1061" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-1062" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-1063" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">log</span><span class="gmail-mo" id="gmail-MathJax-Span-1064" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-mo" id="gmail-MathJax-Span-1065" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1066" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1067" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1068" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-1069" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1070" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1071" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1072" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1073" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1074" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span><span class="gmail-mo" id="gmail-MathJax-Span-1075" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-munderover" id="gmail-MathJax-Span-1076" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.996em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1077" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size2">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1078" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1079" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1080" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mo" id="gmail-MathJax-Span-1081" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">∈</span><span class="gmail-mi" id="gmail-MathJax-Span-1082" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span class="gmail-mi" id="gmail-MathJax-Span-1083" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">e</span><span class="gmail-mi" id="gmail-MathJax-Span-1084" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">g<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.003em"></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1085" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">N<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;overflow:hidden;height:1px;width:0.057em"></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-1086" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1087" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">x</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1088" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1089" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1090" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1091" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-1092" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">j</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mi" id="gmail-MathJax-Span-1093" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">log</span><span class="gmail-mo" id="gmail-MathJax-Span-1094" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-mo" id="gmail-MathJax-Span-1095" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1096" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1097" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1098" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-1099" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1100" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1101" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-1102" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">0</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1103" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1104" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.622em;line-height:normal;overflow:hidden;width:0px;height:3.691em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:387.953px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">L<span class="gmail-MJX-TeXAtom-ORD">conf</span>(x,c)=−∑<span class="gmail-MJX-TeXAtom-ORD">i∈Pos</span>Nx<span class="gmail-MJX-TeXAtom-ORD">ij</span>plog(<span class="gmail-MJX-TeXAtom-ORD">c^</span>ip)−∑<span class="gmail-MJX-TeXAtom-ORD">i∈Neg</span>Nx<span class="gmail-MJX-TeXAtom-ORD">ij</span>plog(<span class="gmail-MJX-TeXAtom-ORD">c^</span>i0)</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">クラス分類はソフトマックス関数</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-23-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1105" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.731em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:7.492em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1106" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1107" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1108" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1109" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.973em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1110" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1111" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-1112" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.541em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1113" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1114" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">^</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1115" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1116" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1117" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-mfrac" id="gmail-MathJax-Span-1118" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:4.96em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1119" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1120" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">exp</span><span class="gmail-mo" id="gmail-MathJax-Span-1121" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-mo" id="gmail-MathJax-Span-1122" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1123" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1124" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1125" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1126" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1127" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1128" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-munderover" id="gmail-MathJax-Span-1129" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.511em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1130" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;font-family:MathJax_Size1">∑</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1131" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-1132" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1133" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1134" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">exp</span><span class="gmail-mo" id="gmail-MathJax-Span-1135" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"></span><span class="gmail-mo" id="gmail-MathJax-Span-1136" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1137" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.865em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1138" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">c</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1139" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">p</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1140" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1141" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:4.96em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-1.434em;line-height:normal;overflow:hidden;width:0px;height:3.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:139.688px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD"><span class="gmail-MJX-TeXAtom-ORD">c^</span>ip=exp(cip)∑p<span class="gmail-MJX-TeXAtom-ORD">exp(cip)</span></span></span></span></div></div><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-choosing-scales-and-aspect-ratios-for-default-boxes" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#choosing-scales-and-aspect-ratios-for-default-boxes" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Choosing scales and aspect ratios for default boxes</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">特徴マップがマルチスケールのため、各特徴マップごとにどの大きさのオブジェクトを検出するか役割を与えます。mが大きくなるほどスケールが小さくなります。これはモデルが深い層ほど小さいなオブジェクトの検出を行なっている特徴マップになっていることを表しています。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-24-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1142" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:15.843em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:13.634em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1143" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1144" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1145" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1146" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1147" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1148" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1149" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1150" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.835em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1151" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1152" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1153" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1154" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-1155" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-1156" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1157" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mfrac" id="gmail-MathJax-Span-1158" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px 0.11em;vertical-align:0px;line-height:normal;width:5.121em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1159" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1160" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.942em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1161" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1162" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1163" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1164" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-1165" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">a</span><span class="gmail-mi" id="gmail-MathJax-Span-1166" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">x</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1167" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1168" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.835em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1169" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1170" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1171" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1172" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">m</span><span class="gmail-mi" id="gmail-MathJax-Span-1173" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">i</span><span class="gmail-mi" id="gmail-MathJax-Span-1174" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">n</span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1175" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1176" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">m</span><span class="gmail-mo" id="gmail-MathJax-Span-1177" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mn" id="gmail-MathJax-Span-1178" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border-width:1.3px 0px 0px;border-top-style:solid;border-right-style:initial;border-bottom-style:initial;border-left-style:initial;border-color:initial;padding:0px;margin:0px;vertical-align:0.003em;line-height:normal;overflow:hidden;width:5.121em;height:0px"></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:1.08em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1179" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">(</span><span class="gmail-mi" id="gmail-MathJax-Span-1180" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">k</span><span class="gmail-mo" id="gmail-MathJax-Span-1181" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−</span><span class="gmail-mn" id="gmail-MathJax-Span-1182" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-1183" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">)</span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.872em;line-height:normal;overflow:hidden;width:0px;height:2.253em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:253.484px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">sk=s<span class="gmail-MJX-TeXAtom-ORD">min</span>+s<span class="gmail-MJX-TeXAtom-ORD">max</span>−s<span class="gmail-MJX-TeXAtom-ORD">min</span>m−1(k−1)</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">デファルトで用意するバウンディングボックスのアスペクト比を下記のようにして</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-25-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1184" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:9.916em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:8.516em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1185" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1186" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1187" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1188" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1189" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1190" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1191" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-texatom" id="gmail-MathJax-Span-1192" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1193" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mn" id="gmail-MathJax-Span-1194" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-mo" id="gmail-MathJax-Span-1195" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mn" id="gmail-MathJax-Span-1196" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">2</span><span class="gmail-mo" id="gmail-MathJax-Span-1197" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mn" id="gmail-MathJax-Span-1198" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">3</span><span class="gmail-mo" id="gmail-MathJax-Span-1199" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mn" id="gmail-MathJax-Span-1200" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-texatom" id="gmail-MathJax-Span-1201" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1202" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1203" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-mn" id="gmail-MathJax-Span-1204" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">2</span><span class="gmail-mo" id="gmail-MathJax-Span-1205" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">,</span><span class="gmail-mn" id="gmail-MathJax-Span-1206" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.164em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span><span class="gmail-texatom" id="gmail-MathJax-Span-1207" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1208" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1209" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-mn" id="gmail-MathJax-Span-1210" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">3</span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.372em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:158.641px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">ar=<span class="gmail-MJX-TeXAtom-ORD">1,2,3,1<span class="gmail-MJX-TeXAtom-ORD">/</span>2,1<span class="gmail-MJX-TeXAtom-ORD">/</span>3</span></span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">それぞれの幅、高さを計算して、バウンディングボックスを用意します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">幅</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-26-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1211" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:6.199em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:5.337em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1212" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1213" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1214" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1215" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.188em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1216" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">w</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1217" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">a</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1218" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1219" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1220" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1221" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1222" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msqrt" id="gmail-MathJax-Span-1223" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.888em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1224" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1225" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1226" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1227" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">√</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.497em;line-height:normal;overflow:hidden;width:0px;height:1.316em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:99.1719px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">wka=skar</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">高さ</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-27-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1228" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:6.576em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:5.66em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1229" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1230" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1231" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1232" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1233" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">h</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1234" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">a</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1235" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1236" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msubsup" id="gmail-MathJax-Span-1237" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1238" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1239" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-texatom" id="gmail-MathJax-Span-1240" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1241" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1242" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">/</span></span></span><span class="gmail-msqrt" id="gmail-MathJax-Span-1243" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.888em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1244" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1245" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1246" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">a</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1247" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">r</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:1.026em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">√</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.497em;line-height:normal;overflow:hidden;width:0px;height:1.441em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:105.203px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">hka=sk<span class="gmail-MJX-TeXAtom-ORD">/</span>ar</span></span></span></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">アスペクト比が1の場合は下記のスケールを適用したバウンディングボックスを用意します。</p><div style="box-sizing:inherit"><span class="gmail-MathJax_Preview" style="box-sizing:inherit;color:inherit"></span><div class="gmail-MathJax_Display" style="box-sizing:inherit;text-align:center;margin:1em 0em;max-width:none;max-height:none;min-width:0px;min-height:0px;width:804px;overflow:auto hidden"><span class="gmail-MathJax" id="gmail-MathJax-Element-28-Frame" tabindex="0" style="box-sizing:inherit;display:inline-block;line-height:normal;font-size:16px;text-align:left;word-spacing:normal;white-space:nowrap;float:none;direction:ltr;max-width:100%;max-height:none;min-width:0px;min-height:0px;border:0px;padding:0px;margin:0px;overflow:auto hidden;vertical-align:text-top"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;max-width:none;max-height:none;min-width:0px;min-height:0px;vertical-align:0px;line-height:normal"><span class="gmail-math" id="gmail-MathJax-Span-1248" style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:7.977em"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:6.845em;height:0px;font-size:18.56px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1249" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-texatom" id="gmail-MathJax-Span-1250" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1251" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1252" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1253" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mo" id="gmail-MathJax-Span-1254" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Main">′</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1255" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1256" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">=</span><span class="gmail-msqrt" id="gmail-MathJax-Span-1257" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.272em;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:4.582em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mrow" id="gmail-MathJax-Span-1258" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-msubsup" id="gmail-MathJax-Span-1259" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1260" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1261" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-msubsup" id="gmail-MathJax-Span-1262" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0.919em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1263" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Math-italic">s</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span class="gmail-mi" id="gmail-MathJax-Span-1264" style="box-sizing:inherit;display:inline;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-size:13.1219px;font-family:MathJax_Math-italic">k</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span><span class="gmail-mo" id="gmail-MathJax-Span-1265" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">+</span><span class="gmail-mn" id="gmail-MathJax-Span-1266" style="box-sizing:inherit;display:inline;border:0px;padding:0px 0px 0px 0.218em;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">1</span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:3.559em;height:0px"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Main">−<span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal"><span style="box-sizing:inherit;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;font-family:MathJax_Size1">√</span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:3.99em"></span></span></span></span></span></span></span><span style="box-sizing:inherit;display:inline-block;border:0px;padding:0px;margin:0px;vertical-align:0px;line-height:normal;width:0px;height:2.373em"></span></span></span><span style="box-sizing:inherit;display:inline-block;border-width:0px;border-top-style:initial;border-right-style:initial;border-bottom-style:initial;border-left-style:solid;border-color:initial;padding:0px;margin:0px;vertical-align:-0.497em;line-height:normal;overflow:hidden;width:0px;height:1.503em"></span></span></span><span class="gmail-MJX_Assistive_MathML gmail-MJX_Assistive_MathML_Block" style="box-sizing:inherit;padding:0px;border:0px;width:127.625px;display:inline;margin:0px;vertical-align:0px;line-height:normal;height:1px;overflow:hidden"><span class="gmail-MJX-TeXAtom-ORD">sk′=sksk+1</span></span></span></div></div><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-hard-negative-mining" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#hard-negative-mining" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Hard negative mining</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">負例のバウンディングボックスが多数出るので信頼度順にソートして上位からピックアップし3:1(負例:正例)の比率になるように修正</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-data-augmentation" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#data-augmentation" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Data augmentation</h3><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">画像全体</li><li style="box-sizing:inherit;margin:0px;padding:0px">切り取った画像ごとの真の値との重なり度(Jaccard)が0.1, 0.3, 0.5, 0.7, 0.9でサンプルを選択</li><li style="box-sizing:inherit;margin:0px;padding:0px">切り取った画像をランダムにサンプル</li></ul><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-具体的な実装例" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E5%AE%9F%E8%A3%85%E4%BE%8B" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>具体的な実装例</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">抽象的な概念ややり方は分かったと実装するにはどうするんだという声が聞こえてきそうです。<br style="box-sizing:inherit">下記のコードを参考にKeras v2.0で実装を行います。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://github.com/SnowMasaya/ssd_keras" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">A port of SSD: Single Shot MultiBox Detector to Keras framework.</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">オリジナルのコードはkeras2.0系に対応していないのでプルリクで修正してくれているコードを参考にします。<br style="box-sizing:inherit">Dockerによる環境提供を記述しました。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://github.com/SnowMasaya/ssd_keras" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/SnowMasaya/ssd_keras</a></p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-modelの理解" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#model%E3%81%AE%E7%90%86%E8%A7%A3" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Modelの理解</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">TensorflowにはTensorboardという可視化ツールがあるのでそれを利用して可視化を行います。</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">モデルの可視化</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">Tensorboardのモデルのグラフ化を行い、全体像を把握します。</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-cnnレイヤー" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#cnn%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>CNNレイヤー</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/79849d716fb0038f2c9abf7d5759aa74195096b2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f39623235373363322d613466362d366230662d626335632d3634343132623034393963662e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/79849d716fb0038f2c9abf7d5759aa74195096b2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f39623235373363322d613466362d366230662d626335632d3634343132623034393963662e706e67" alt="Screen Shot 2017-06-26 at 14.33.10.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-特徴マップを合体している部分" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E7%89%B9%E5%BE%B4%E3%83%9E%E3%83%83%E3%83%97%E3%82%92%E5%90%88%E4%BD%93%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%83%A8%E5%88%86" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>特徴マップを合体している部分</h3><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">オフセット(位置):<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">mbox_loc</code></li><li style="box-sizing:inherit;margin:0px;padding:0px">確信度 : <code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">mbox_conf</code></li><li style="box-sizing:inherit;margin:0px;padding:0px">各バウンダリーボックス : <code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">mbox_priorbox</code></li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/92fe00051ffa0246c505ec0a4c4d2beafa8374b2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f39343264306364392d333936632d316266322d633935622d3230636233346537336534392e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/92fe00051ffa0246c505ec0a4c4d2beafa8374b2/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f39343264306364392d333936632d316266322d633935622d3230636233346537336534392e706e67" alt="Screen Shot 2017-06-26 at 14.33.44.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-最終層" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E6%9C%80%E7%B5%82%E5%B1%A4" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>最終層</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">合体された特徴マップを用いて予測</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/9d57f342e1cf3af8788592e8a5f419f0e2c0da94/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f64306663626633632d376263332d353232322d623865652d3332323234343238373766392e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/9d57f342e1cf3af8788592e8a5f419f0e2c0da94/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f64306663626633632d376263332d353232322d623865652d3332323234343238373766392e706e67" alt="Screen Shot 2017-06-26 at 14.37.28.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-具体的なコードの理解" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E7%90%86%E8%A7%A3" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>具体的なコードの理解</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">概念図を理解した段階で具体的な処理を理解します。</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-モデルの記述" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E8%A8%98%E8%BF%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>モデルの記述</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">ssd_v2.py</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/e18de3b77ab5bc6eec333efd926bd0cc16d18ae0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f63386234343761362d396264352d336135632d346430372d3364663033356564303462642e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/e18de3b77ab5bc6eec333efd926bd0cc16d18ae0/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f63386234343761362d396264352d336135632d346430372d3364663033356564303462642e706e67" alt="Screen Shot 2017-06-26 at 10.19.02.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">ssdでは特徴マップの異なるレイヤーを合体して出力しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">下記がオフセットとクラス識別の層をそれぞれコンカチしている処理です。0次元目がデータの次元なので1次元目の特徴量の次元が増える形になります。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-n" style="box-sizing:inherit">mbox_loc</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">([</span><span class="gmail-n" style="box-sizing:inherit">conv4_3_norm_mbox_loc_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">fc7_mbox_loc_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">conv6_2_mbox_loc_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">conv7_2_mbox_loc_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">conv8_2_mbox_loc_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">pool6_mbox_loc_flat</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">name</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'mbox_loc'</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">mbox_conf</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">([</span><span class="gmail-n" style="box-sizing:inherit">conv4_3_norm_mbox_conf_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">fc7_mbox_conf_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">conv6_2_mbox_conf_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">conv7_2_mbox_conf_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">conv8_2_mbox_conf_flat</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">pool6_mbox_conf_flat</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">name</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'mbox_conf'</span><span class="gmail-p" style="box-sizing:inherit">)</span> </pre></div></div><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">num_boxes = mbox_loc._keras_shape[-1] // 4 </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">ボックスの数は位置の特徴量(全てがコンカチされたもの)を4で割ると得られるのでその値を利用します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">下記でコンカチした次元をオフセットの次元とクラスの識別の次元に修正しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">num_boxesの次元:7308<br style="box-sizing:inherit">mbox_locの次元:29232 (7308 * 4) <br style="box-sizing:inherit">mbox_confの次元:153468 (7308 * クラス数(21))</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-n" style="box-sizing:inherit">mbox_loc</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">Reshape</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">num_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">name</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'mbox_loc_final'</span><span class="gmail-p" style="box-sizing:inherit">)(</span><span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">mbox_conf</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">Reshape</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">num_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">num_classes</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">name</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'mbox_conf_logits'</span><span class="gmail-p" style="box-sizing:inherit">)(</span><span class="gmail-n" style="box-sizing:inherit">mbox_conf</span><span class="gmail-p" style="box-sizing:inherit">)</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">出力層ではオフセット、クラス識別、バウンディングボックス(x,y,h,wと各4座標のバリアンス)をコンカチしている処理です。<br style="box-sizing:inherit">0次元目がデータの次元、1次元がバウンディングボックスの数の次元なので2次元目の特徴量の次元が増える形になります。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-n" style="box-sizing:inherit">predictions</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">([</span><span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">mbox_conf</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">name</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'predictions'</span><span class="gmail-p" style="box-sizing:inherit">)</span> </pre></div></div><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-ssdで必要な処理の記述" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#ssd%E3%81%A7%E5%BF%85%E8%A6%81%E3%81%AA%E5%87%A6%E7%90%86%E3%81%AE%E8%A8%98%E8%BF%B0" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>SSDで必要な処理の記述</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">ssd_utils.pyはバウンディングボックスの設定を行なっています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">メソッド一覧</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">decode_boxes:位置の予測を一致するバウンディングボックスの値に変換しています。</li></ul><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">引数として位置の4つのオフセット、バウンディングボックスのオフセット、バウンディングボックスの分散を使用しています。<br style="box-sizing:inherit">分散を利用する理由は一意に値が決まる訳ではないのである程度範囲を持った予測をできるようにするためです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: バウンディングボックスのオフセット情報から中心位置と幅、高さを求める<br style="box-sizing:inherit">2: デコードするバウンダリーボックスを求めるため、先ほどの値と分散を利用してデコードしたバウンダリーボックスの中心位置と幅、高さを求める。予測した値は小さいのでexpにより十分な大きさの値に変換する。注意点として分散を考慮している点。予測した中央点と幅、高さは確率的なものを考慮して分散による値のズレを許容するため入れている。<br style="box-sizing:inherit">3: 中心位置から最小、最大のオフセットのために変換する<br style="box-sizing:inherit">4: 求めた値を一つのベクトルにまとめる<br style="box-sizing:inherit">5: 変換した値から0以上かつ1以下の領域のみ返すようにする</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">decode_boxes</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">prior_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">prior_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">prior_center_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">prior_center_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">prior_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+=</span> <span class="gmail-n" style="box-sizing:inherit">prior_center_x</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">prior_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+=</span> <span class="gmail-n" style="box-sizing:inherit">prior_center_y</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">exp</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*=</span> <span class="gmail-n" style="box-sizing:inherit">prior_width</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">exp</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*=</span> <span class="gmail-n" style="box-sizing:inherit">prior_height</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_xmin</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_width</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_ymin</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_height</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_xmax</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_width</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_ymax</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_center_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_height</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">decode_bbox_xmin</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-bp" style="box-sizing:inherit">None</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_ymin</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-bp" style="box-sizing:inherit">None</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_xmax</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-bp" style="box-sizing:inherit">None</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox_ymax</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-bp" style="box-sizing:inherit">None</span><span class="gmail-p" style="box-sizing:inherit">]),</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">minimum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">maximum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">decode_bbox</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.0</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1.0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">detection_out:予測した結果を返す</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: 予測した値から位置、分散、バウンディングボックス、確信度を取得<br style="box-sizing:inherit">2: 位置の値をバウンディングボックスに変換<br style="box-sizing:inherit">3: クラスの確信度が一定以上の場合はバウンディングボックスの値までを求める。<br style="box-sizing:inherit">4: 上位200件の結果を返す</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">detection_out</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">predictions</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">background_label_id</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">keep_top_k</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">200</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">confidence_threshold</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.01</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">mbox_loc</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">predictions</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">variances</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">predictions</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:]</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">predictions</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">mbox_conf</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">predictions</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">results</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">[]</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">for</span> <span class="gmail-n" style="box-sizing:inherit">i</span> <span class="gmail-ow" style="box-sizing:inherit;color:rgb(255,128,149)">in</span> <span class="gmail-nb" style="box-sizing:inherit">range</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">)):</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">([])</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">decode_boxes</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">mbox_loc</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">i</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">mbox_priorbox</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">i</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">i</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">for</span> <span class="gmail-n" style="box-sizing:inherit">c</span> <span class="gmail-ow" style="box-sizing:inherit;color:rgb(255,128,149)">in</span> <span class="gmail-nb" style="box-sizing:inherit">range</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_classes</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-n" style="box-sizing:inherit">c</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-n" style="box-sizing:inherit">background_label_id</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">continue</span> <span class="gmail-n" style="box-sizing:inherit">c_confs</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">mbox_conf</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">i</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-n" style="box-sizing:inherit">c</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">c_confs_m</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">c_confs</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">></span> <span class="gmail-n" style="box-sizing:inherit">confidence_threshold</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">c_confs</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">c_confs_m</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">></span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">boxes_to_process</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">decode_bbox</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">c_confs_m</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">confs_to_process</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">c_confs</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">c_confs_m</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">feed_dict</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">{</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">boxes</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">boxes_to_process</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">scores</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">confs_to_process</span><span class="gmail-p" style="box-sizing:inherit">}</span> <span class="gmail-n" style="box-sizing:inherit">idx</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">sess</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">run</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">nms</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">feed_dict</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-n" style="box-sizing:inherit">feed_dict</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">good_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">boxes_to_process</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">idx</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">confs</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">confs_to_process</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">idx</span><span class="gmail-p" style="box-sizing:inherit">][:,</span> <span class="gmail-bp" style="box-sizing:inherit">None</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">labels</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">c</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">ones</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">idx</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">c_pred</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">labels</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">confs</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">good_boxes</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">extend</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">c_pred</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">></span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">array</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">argsort</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">argsort</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">][:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])[::</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">argsort</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">results</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">][:</span><span class="gmail-n" style="box-sizing:inherit">keep_top_k</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">results</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">ssd_layers.py</code>はバウンディングボックスのサイズを決めている<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">PriorBox</code>のクラスを設定しています。図の黒線と赤線の部分です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/bbb62c6ceb204eb473a35df1f9afe500c4e290c1/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f37396530323462612d613662322d613264632d323666612d6330636634373265616461392e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/bbb62c6ceb204eb473a35df1f9afe500c4e290c1/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f37396530323462612d613662322d613264632d323666612d6330636634373265616461392e706e67" alt="Screen Shot 2017-06-26 at 17.00.25.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: 特徴マップの幅と高さを取得<br style="box-sizing:inherit">2: 入力画像の幅と高さを取得<br style="box-sizing:inherit">3: アスペクト比に合わせてバウンディングボックスのサイズを追加<br style="box-sizing:inherit">4: アスペクト比が1とそうでない時で処理が異なる。<br style="box-sizing:inherit">5: ボックスの中央位置の定義<br style="box-sizing:inherit">6: 最小位置と最大位置のバウンディングボックスの設定<br style="box-sizing:inherit">7: 分散の設定<br style="box-sizing:inherit">8: バウンディングボックスと分散を設定し、Tensorflowのフォーマットで返す</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"><span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">class</span> <span class="gmail-nc" style="box-sizing:inherit;color:rgb(139,223,76)">PriorBox</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">Layer</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 省略</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">call</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">x</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">mask</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-bp" style="box-sizing:inherit">None</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-nb" style="box-sizing:inherit">hasattr</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">x</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'_keras_shape'</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">input_shape</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">x</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">_keras_shape</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">elif</span> <span class="gmail-nb" style="box-sizing:inherit">hasattr</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">K</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'int_shape'</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">input_shape</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">K</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">int_shape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">x</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">layer_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">input_shape</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">waxis</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">layer_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">input_shape</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">haxis</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">img_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">img_size</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">img_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">img_size</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># define prior boxes shapes</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">[]</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">[]</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">for</span> <span class="gmail-n" style="box-sizing:inherit">ar</span> <span class="gmail-ow" style="box-sizing:inherit;color:rgb(255,128,149)">in</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">aspect_ratios</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-n" style="box-sizing:inherit">ar</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-ow" style="box-sizing:inherit;color:rgb(255,128,149)">and</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box_widths</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">min_size</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">min_size</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">elif</span> <span class="gmail-n" style="box-sizing:inherit">ar</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-ow" style="box-sizing:inherit;color:rgb(255,128,149)">and</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box_widths</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">></span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">sqrt</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">min_size</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">max_size</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">sqrt</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">min_size</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">max_size</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">elif</span> <span class="gmail-n" style="box-sizing:inherit">ar</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">!=</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">min_size</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">sqrt</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">ar</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">append</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">min_size</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">sqrt</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">ar</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">array</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box_widths</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">array</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box_heights</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 画像のサイズを特徴量のサイズで割ってステップ幅を取得</span> <span class="gmail-n" style="box-sizing:inherit">step_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">img_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/</span> <span class="gmail-n" style="box-sizing:inherit">layer_width</span> <span class="gmail-n" style="box-sizing:inherit">step_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">img_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/</span> <span class="gmail-n" style="box-sizing:inherit">layer_height</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># linspaceの処理</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># <a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html">https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html</a></span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># np.linspace(2.0, 3.0, num=5)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># -> array([ 2. , 2.25, 2.5 , 2.75, 3. ])</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># ステップ幅ごとに特徴量の数分、縦、横のarrayを取得</span> <span class="gmail-n" style="box-sizing:inherit">linx</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">linspace</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">step_x</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">img_width</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">step_x</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">layer_width</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">liny</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">linspace</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">step_y</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">img_height</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">step_y</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">layer_height</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># meshgridの処理</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># <a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html">https://docs.scipy.org/doc/numpy/reference/generated/numpy.meshgrid.html</a></span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># xv, yv = np.meshgrid(x, y)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># xv</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># -> array([[ 0. , 0.5, 1. ],</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># [ 0. , 0.5, 1. ]])</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># yv</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># -> array([[ 0., 0., 0.],</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># [ 1., 1., 1.]])</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 先ほど作成した特徴量のarrayを合わせる</span> <span class="gmail-n" style="box-sizing:inherit">centers_x</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">centers_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">meshgrid</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">linx</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">liny</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">centers_x</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">centers_x</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">centers_y</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">centers_y</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">num_priors_</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">aspect_ratios</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">centers_x</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">centers_y</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">tile</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">num_priors_</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">::</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-=</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">::</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-=</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">::</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+=</span> <span class="gmail-n" style="box-sizing:inherit">box_widths</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">::</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+=</span> <span class="gmail-n" style="box-sizing:inherit">box_heights</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">::</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/=</span> <span class="gmail-n" style="box-sizing:inherit">img_width</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">::</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/=</span> <span class="gmail-n" style="box-sizing:inherit">img_height</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">clip</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">minimum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">maximum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.0</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1.0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">num_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">variances</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">ones</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">num_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">elif</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">variances</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">tile</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">else</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">raise</span> <span class="gmail-nb" style="box-sizing:inherit">Exception</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'Must provide one or four variances.'</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">concatenate</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">variances</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes_tensor</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">K</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">expand_dims</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">K</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">variable</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">prior_boxes</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-n" style="box-sizing:inherit">K</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">backend</span><span class="gmail-p" style="box-sizing:inherit">()</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'tensorflow'</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">pattern</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">shape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">x</span><span class="gmail-p" style="box-sizing:inherit">)[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes_tensor</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">tile</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">prior_boxes_tensor</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">pattern</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">prior_boxes_tensor</span> </pre></div></div><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-学習" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>学習</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">SSD_training.ipynb</code>で学習処理をしています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">model.fit_generator</code>で学習処理をするので<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">Generator</code>でdata augmentationを含んだgenerator処理を行なっています。<br style="box-sizing:inherit">教師データ(ラベル、オフセット、バウンディングボックス)を<br style="box-sizing:inherit"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">ssd_utils.py</code>の<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">assign_boxes</code>で設定しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">ssd_utils.py</code>はバウンディングボックスの設定を行なっています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">バウンディングボックスはオフセットの値と各オフセットの分散の値を持つ</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">priors[i] = [xmin, ymin, xmax, ymax, varxc, varyc, varw, varh]. </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">メソッド一覧</p><ul style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;list-style-position:initial;line-height:1.9"><li style="box-sizing:inherit;margin:0px;padding:0px">assign_boxes:学習中に優先しているボックスのみアサイン</li><li style="box-sizing:inherit;margin:0px;padding:0px">encode_box:<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">assign_boxes</code>でコールされてバウンディングボックスを深層学習の空間に変更する処理</li><li style="box-sizing:inherit;margin:0px;padding:0px">iou:<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">encode_box</code>でコールされてバウンディングボックスの交差点の数の計算</li></ul><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-iou" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#iou" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">iou</code></h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/2241994ab84702b941f19d87ccdb481bea07959e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f31376562666635632d633263392d306238662d623132382d3763393963613532646137652e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/2241994ab84702b941f19d87ccdb481bea07959e/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f31303439362f31376562666635632d633263392d306238662d623132382d3763393963613532646137652e706e67" alt="Screen Shot 2017-06-27 at 13.42.35.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: 真のボックスと予測したボックスを用いて左上の座標と右下の座標を取得します。<br style="box-sizing:inherit">2: 取得した座標を元に真のボックスと予測したボックスの重なり部分の面積を計算します。<br style="box-sizing:inherit">3: 予測したボックスの面積を計算します。<br style="box-sizing:inherit">4: 真のボックスの面積を計算します。<br style="box-sizing:inherit">5: 真のボックスと予測したボックスの総面積から内側の面積を引きます。<br style="box-sizing:inherit">6: 重なり部分の面積を5の値(重なっていない部分の面積)で割ります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">6の意味は重なっている部分の面積が大きければ大きいほど重なっていない部分の面積が小さくなり、予測したボックスが真のボックスにどれだけ近いか把握する指標になります。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-n" style="box-sizing:inherit">inter_upleft</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">maximum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">inter_botright</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">minimum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:])</span> <span class="gmail-n" style="box-sizing:inherit">inter_wh</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">inter_botright</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">inter_upleft</span> <span class="gmail-n" style="box-sizing:inherit">inter_wh</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">maximum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">inter_wh</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">inter</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">inter_wh</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">inter_wh</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># compute union</span> <span class="gmail-n" style="box-sizing:inherit">area_pred</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">area_gt</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">area_gt</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">union</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">area_pred</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">area_gt</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">inter</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># compute iou</span> <span class="gmail-n" style="box-sizing:inherit">iou</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">inter</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/</span> <span class="gmail-n" style="box-sizing:inherit">union</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">iou</span> </pre></div></div><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt""><span id="encode_box" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#encode_box" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">encode_box</code></h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">1: <code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">iou</code>で取得したボックスの中で交差点比率が0.5以下のバウンディングボックスは弾きます。<br style="box-sizing:inherit">2: 真のボックスの中央位置と幅を取得<br style="box-sizing:inherit">3: 1の条件を満たした予測したボックスの中央位置と幅を取得<br style="box-sizing:inherit">4: 学習しに使用するためのEncodeボックスを用意<br style="box-sizing:inherit">5: 真のボックスの中央位置と予測したボックスの中央位置を引く(どの程度の開きがあるか分かる)<br style="box-sizing:inherit">6: 5の値を予測したボックスの幅で割る(比率が分かる)<br style="box-sizing:inherit">7: 6の値を予測したボックスの分散で割る<br style="box-sizing:inherit">8: エンコードしたボックスの幅を真のボックスの幅と予測したボックスの幅で割って対数を取る<br style="box-sizing:inherit">9: エンコードしたボックスの幅を予測したボックスの幅で割る</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">8と9の処理は位置に関する損失関数のための変換処理です。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-n" style="box-sizing:inherit">iou</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">iou</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">zeros</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_priors</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">return_iou</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">assign_mask</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">iou</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">></span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">overlap_threshold</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-ow" style="box-sizing:inherit;color:rgb(255,128,149)">not</span> <span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-nb" style="box-sizing:inherit">any</span><span class="gmail-p" style="box-sizing:inherit">():</span> <span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">iou</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">argmax</span><span class="gmail-p" style="box-sizing:inherit">()]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">True</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-n" style="box-sizing:inherit">return_iou</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">iou</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">priors</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">box_center</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:])</span> <span class="gmail-n" style="box-sizing:inherit">box_wh</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">box</span><span class="gmail-p" style="box-sizing:inherit">[:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors_center</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">assigned_priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors_wh</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">assigned_priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># we encode variance</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">box_center</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors_center</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/=</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors_wh</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/=</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">log</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">box_wh</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors_wh</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">assign_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/=</span> <span class="gmail-n" style="box-sizing:inherit">assigned_priors</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">:]</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">encoded_box</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">ravel</span><span class="gmail-p" style="box-sizing:inherit">()</span> </pre></div></div><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-assign_boxes" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#assign_boxes" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">assign_boxes</code></h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">1: バウンディングボックスとクラス数、オフセット、バリアンスで初期化したアサイメントを用意<br style="box-sizing:inherit">2: 真のボックスをエンコードしたものを用意<br style="box-sizing:inherit">3: 真のボックスと予測したボックスの最大値だけ取得<br style="box-sizing:inherit">4: 真のボックスと予測したボックスの最大値のインデックスだけ取得<br style="box-sizing:inherit">5: 0以上の比率のものだけ選択<br style="box-sizing:inherit">6: アサインするオフセットをエンコードしたボックスのオフセットを上記の条件を満たしたものを代入<br style="box-sizing:inherit">7: クラスの割り当て<br style="box-sizing:inherit">8: ポジティブサンプルとネガティブサンプルで学習するため、あらかじめポジティブサンプルを用意</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># </span> <span class="gmail-n" style="box-sizing:inherit">assignment</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">zeros</span><span class="gmail-p" style="box-sizing:inherit">((</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_priors</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_classes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1.0</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">boxes</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">==</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">apply_along_axis</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">encode_box</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_priors</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">5</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">best_iou</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-nb" style="box-sizing:inherit">max</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">best_iou_idx</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">argmax</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">best_iou</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">></span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span> <span class="gmail-n" style="box-sizing:inherit">best_iou_idx</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">best_iou_idx</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">assign_num</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-nb" style="box-sizing:inherit">len</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">best_iou_idx</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">:]</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># エンコードした座標の割り当て</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">encoded_boxes</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">best_iou_idx</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">arange</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">assign_num</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># クラスの割り当て</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">5</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">boxes</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">best_iou_idx</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:]</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 学習用ポジティブサンプルの割り当て</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">][</span><span class="gmail-n" style="box-sizing:inherit">best_iou_mask</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">assignment</span> </pre></div></div><h4 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.2em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-ssd_trainingpy" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#ssd_trainingpy" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">ssd_training.py</code></h4><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">ssd_training.py</code>で位置とクラス識別の損失関数の設定をしています。<br style="box-sizing:inherit">最初の値設定でクラス数、クラス損失関数と位置損失関数の比率、負例の比率を決定しています。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"><span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">class</span> <span class="gmail-nc" style="box-sizing:inherit;color:rgb(139,223,76)">MultiboxLoss</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-nb" style="box-sizing:inherit">object</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">__init__</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">num_classes</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">alpha</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1.0</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">neg_pos_ratio</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">3.0</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">background_label_id</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">negatives_for_hard</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">100.0</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_classes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">num_classes</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">alpha</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">alpha</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">neg_pos_ratio</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">neg_pos_ratio</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">if</span> <span class="gmail-n" style="box-sizing:inherit">background_label_id</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">!=</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">:</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">raise</span> <span class="gmail-nb" style="box-sizing:inherit">Exception</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-s" style="box-sizing:inherit;color:rgb(65,183,215)">'Only 0 as background label id is supported'</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">background_label_id</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">background_label_id</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">negatives_for_hard</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">negatives_for_hard</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">下記は位置損失関数で使用する<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">l1_smooth</code>関数です。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">_l1_smooth_loss</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">abs_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-nb" style="box-sizing:inherit">abs</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">sq_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">)</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">**</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span> <span class="gmail-n" style="box-sizing:inherit">l1_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">where</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">less</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">abs_loss</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1.0</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">sq_loss</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">abs_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">0.5</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_sum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">l1_loss</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">下記はクラス損失関数で使用する<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">soft_max</code>関数です。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">_softmax_loss</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">maximum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">minimum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1e-15</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-mf" style="box-sizing:inherit;color:rgb(169,128,245)">1e-15</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">softmax_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_sum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">log</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">softmax_loss</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">下記で位置損失関数とクラス識別損失関数を合算したマルチロス損失を計算します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">1: 識別と位置の損失を計算<br style="box-sizing:inherit">2: 正例の損失を計算<br style="box-sizing:inherit">3: 負例の損失を計算、確信度が高いものしか取得しない<br style="box-sizing:inherit">4: 負例と正例の損失の合計を計算</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">def</span> <span class="gmail-nf" style="box-sizing:inherit;color:rgb(139,223,76)">compute_loss</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">):</span> <span class="gmail-n" style="box-sizing:inherit">batch_size</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">shape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">)[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">]</span> <span class="gmail-n" style="box-sizing:inherit">num_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">to_float</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">shape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">)[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 全てのボックスの損失を計算</span> <span class="gmail-n" style="box-sizing:inherit">conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">_softmax_loss</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">loc_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">_l1_smooth_loss</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 正例の損失を計算</span> <span class="gmail-n" style="box-sizing:inherit">num_pos</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_sum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">pos_loc_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_sum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">loc_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">pos_conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_sum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 負例の損失を計算、確信度が高いものしか取得しない</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># 負例の数を取得</span> <span class="gmail-n" style="box-sizing:inherit">num_neg</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">minimum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">neg_pos_ratio</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">num_pos</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">num_boxes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">num_pos</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># </span> <span class="gmail-n" style="box-sizing:inherit">pos_num_neg_mask</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">greater</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_neg</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">has_min</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">to_float</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_any</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">pos_num_neg_mask</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">num_neg</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">concat</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">values</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">num_neg</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">[(</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">has_min</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">negatives_for_hard</span><span class="gmail-p" style="box-sizing:inherit">]])</span> <span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_min</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">boolean_mask</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_neg</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">greater</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_neg</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">)))</span> <span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">to_int32</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">confs_start</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">background_label_id</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-n" style="box-sizing:inherit">confs_end</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">confs_start</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">num_classes</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-n" style="box-sizing:inherit">max_confs</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_max</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">y_pred</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-n" style="box-sizing:inherit">confs_start</span><span class="gmail-p" style="box-sizing:inherit">:</span><span class="gmail-n" style="box-sizing:inherit">confs_end</span><span class="gmail-p" style="box-sizing:inherit">],</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">2</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">_</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">indices</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">nn</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">top_k</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">max_confs</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span> <span class="gmail-n" style="box-sizing:inherit">y_true</span><span class="gmail-p" style="box-sizing:inherit">[:,</span> <span class="gmail-p" style="box-sizing:inherit">:,</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">8</span><span class="gmail-p" style="box-sizing:inherit">]),</span> <span class="gmail-n" style="box-sizing:inherit">k</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">batch_idx</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">expand_dims</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-nb" style="box-sizing:inherit">range</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">batch_size</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">batch_idx</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">tile</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">batch_idx</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">full_indices</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">batch_idx</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">to_int32</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_boxes</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">indices</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]))</span> <span class="gmail-n" style="box-sizing:inherit">neg_conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">gather</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">conf_loss</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">-</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">]),</span> <span class="gmail-n" style="box-sizing:inherit">full_indices</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">neg_conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reshape</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">neg_conf_loss</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-n" style="box-sizing:inherit">batch_size</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span><span class="gmail-p" style="box-sizing:inherit">])</span> <span class="gmail-n" style="box-sizing:inherit">neg_conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">reduce_sum</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">neg_conf_loss</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">axis</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-c" style="box-sizing:inherit;color:rgb(157,171,174)"># loss is sum of positives and negatives</span> <span class="gmail-n" style="box-sizing:inherit">total_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">pos_conf_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">neg_conf_loss</span> <span class="gmail-n" style="box-sizing:inherit">total_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_pos</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">to_float</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_neg_batch</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">num_pos</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">where</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">not_equal</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_pos</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">),</span> <span class="gmail-n" style="box-sizing:inherit">num_pos</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">tf</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">ones_like</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">num_pos</span><span class="gmail-p" style="box-sizing:inherit">))</span> <span class="gmail-n" style="box-sizing:inherit">total_loss</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+=</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-bp" style="box-sizing:inherit">self</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">alpha</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">*</span> <span class="gmail-n" style="box-sizing:inherit">pos_loc_loss</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">/</span> <span class="gmail-n" style="box-sizing:inherit">num_pos</span> <span class="gmail-k" style="box-sizing:inherit;color:rgb(235,210,71)">return</span> <span class="gmail-n" style="box-sizing:inherit">total_loss</span> </pre></div></div><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-学習データ" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92%E3%83%87%E3%83%BC%E3%82%BF" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>学習データ</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">画像データ<br style="box-sizing:inherit">ラベルデータ:オフセットとクラスが記述されたもの</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">ラベルデータは下記のような形式のxmlで記述されていています。<br style="box-sizing:inherit">クラスラベルとオフセットが把握できます。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"><annotation> <folder>VOC2007</folder> <filename>000032.jpg</filename> <source> <database>The VOC2007 Database</database> <annotation>PASCAL VOC2007</annotation> <image>flickr</image> <flickrid>311023000</flickrid> </source> <owner> <flickrid>-hi-no-to-ri-mo-rt-al-</flickrid> <name>?</name> </owner> <size> <width>500</width> <height>281</height> <depth>3</depth> </size> <segmented>1</segmented> <object> <name>aeroplane</name> <pose>Frontal</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>104</xmin> <ymin>78</ymin> <xmax>375</xmax> <ymax>183</ymax> </bndbox> </object> <object> <name>aeroplane</name> <pose>Left</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>133</xmin> <ymin>88</ymin> <xmax>197</xmax> <ymax>123</ymax> </bndbox> </object> <object> <name>person</name> <pose>Rear</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>195</xmin> <ymin>180</ymin> <xmax>213</xmax> <ymax>229</ymax> </bndbox> </object> <object> <name>person</name> <pose>Rear</pose> <truncated>0</truncated> <difficult>0</difficult> <bndbox> <xmin>26</xmin> <ymin>189</ymin> <xmax>44</xmax> <ymax>238</ymax> </bndbox> </object> </annotation> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">一つの画像でも複数のオフセットができるのでラベルのデータ形式はバウンディングボックスの数だけ存在します。<br style="box-sizing:inherit">バウデンィングボックスの定義は<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">prior_boxes_ssd300.pkl</code>でしています。<br style="box-sizing:inherit"><code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">prior_box_variance</code>はバウンディングボックスの分散を表しています。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">[xmin, ymin, xmax, ymax, binary_class_label[クラス数に依存], prior_box_xmin, prior_box_ymin, prior_box_xmax, prior_box_ymax, prior_box_variance_xmin, prior_box_variance_ymin, prior_box_variance_xmax, prior_box_variance_ymax,] [xmin, ymin, xmax, ymax, binary_class_label[クラス数に依存], prior_box_xmin, prior_box_ymin, prior_box_xmax, prior_box_ymax, prior_box_variance_xmin, prior_box_variance_ymin, prior_box_variance_xmax, prior_box_variance_ymax,] : </pre></div></div><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-独自の学習データの準備方法" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E7%8B%AC%E8%87%AA%E3%81%AE%E5%AD%A6%E7%BF%92%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%BA%96%E5%82%99%E6%96%B9%E6%B3%95" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>独自の学習データの準備方法</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">自分で学習データを用意してアノテーションしたい要望があると思います。下記のツールを使用すれば今回と同様のxml形式でアノテーションしたデータを用意できるのでオススメです。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://github.com/tzutalin/labelImg" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/tzutalin/labelImg</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">ただしインストールはハマるので私の環境でハマったケースをお伝えしておきます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">OS: macOS Sierra 10.12.5 (16F73)</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">pythonの仮想環境は設定してください!!色々あるのではしょりますがこれをしていないとハマったときに悲惨です。</p><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-sip-のダウンロードおよびインストール" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#sip-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>SIP のダウンロードおよびインストール</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://riverbankcomputing.com/software/sip/download" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://riverbankcomputing.com/software/sip/download</a></p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">cd {download folder}/SIP python configure.py make make install </pre></div></div><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-pyqt5のダウンロードおよびインストール" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#pyqt5%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>PyQt5のダウンロードおよびインストール</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">python3環境で試したのでPyQt5をインストールしました。最新バージョンの5.8はバグがあるので起動しません。よって一つ前のバージョンを明示的に指定してダウンロードしましょう。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">pip install PyQt5==5.7.1 </pre></div></div><h3 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px;font-size:1.4em;line-height:1.5;font-feature-settings:"palt""><span id="gmail-libxmlのインストール" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#libxml%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>libxmlのインストール</h3><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">libxml処理をするので下記でインストールします。(Macの場合)</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">brew install libxml2 </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">日本語名のファイルを保存する場合は文字化けが出るので修正しました。<br style="box-sizing:inherit">プルリクエストがマージされるまで下記をチェックして修正してください。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://github.com/SnowMasaya/labelImg/commit/066eb78704fb0bc551dbb5aebccd8804dae3ed9e" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/SnowMasaya/labelImg/commit/066eb78704fb0bc551dbb5aebccd8804dae3ed9e</a></p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-学習済みモデル" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%83%A2%E3%83%87%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>学習済みモデル</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">Caffeでは学習済みモデルを多数提供しています。Kerasでも学習済みモデルを使用したい場合はコンバーターが必要です。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/db6e88c468185beecded6758d94b29b4b2458d09/68747470733a2f2f643236647a786f616f36693368682e636c6f756466726f6e742e6e65742f6974656d732f3076326a32633430326f3065334a3372307830422f53637265656e73686f7425323066726f6d253230323031372d30372d31382532303038253341343725334135342e706e673f763d3932363062383035" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img src="https://camo.qiitausercontent.com/db6e88c468185beecded6758d94b29b4b2458d09/68747470733a2f2f643236647a786f616f36693368682e636c6f756466726f6e742e6e65742f6974656d732f3076326a32633430326f3065334a3372307830422f53637265656e73686f7425323066726f6d253230323031372d30372d31382532303038253341343725334135342e706e673f763d3932363062383035" alt="Screenshot from 2017-07-18 08:47:54.png" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">Caffeの学習済みモデルは下記で取得できます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://github.com/weiliu89/caffe/tree/ssd" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/weiliu89/caffe/tree/ssd</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">変換には下記を使用します。</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">deploy.prototxt *.caffemodel </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">deploy.protxtは下記のように<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">input layer</code>は変換する必要があります。*の部分はモデルによって変わります。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">変換前</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">input: "data" input_shape { dim: * dim: * dim: * dim: * } </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">変換後</p><div class="gmail-code-frame" style="box-sizing:inherit;padding:1em 32px;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8">layer { name: "input_1" type: "Input" top: "data" input_param { # These dimensions are purely for sake of example; # see infer.py for how to reshape the net to the given input size. shape { dim: * dim: * dim: * dim: * } } } </pre></div></div><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-最後に" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E6%9C%80%E5%BE%8C%E3%81%AB" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>最後に</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">もしこの記事を最初から最後まで読んだ方がいればかなり物体検出に興味もしくは知見があるはずです。<br style="box-sizing:inherit">そのモチベーション、知見を活かして問題解決にチャレンジしたい方、仕事にしてみたい方は下記からの応募をお待ちしております。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://www.kabuku.co.jp/jobs/machine-learning-engineer" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://www.kabuku.co.jp/jobs/machine-learning-engineer</a></p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-参考" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%8F%82%E8%80%83" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>参考</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://github.com/jay-mahadeokar/pynetbuilder/tree/master/models/voc2007_ssd" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">Creating object detection network using SSD</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://www.slideshare.net/takanoriogata1121/ssd-single-shot-multibox-detector-eccv2016?ref=http://tech-blog.abeja.asia/entry/object-detection-summary" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">SSD: Single Shot MultiBox Detector (ECCV2016)</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="http://qiita.com/PonDad/items/6f9e6d9397951cadc6be" id="gmail-reference-c12e01ae3656a0eb42b7" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">SSD: Single Shot MultiBox Detector 高速リアルタイム物体検出デモをKerasで試す</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="http://www.irasutoya.com/" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">いらすとや</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://github.com/rykov8/ssd_keras" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">A port of SSD: Single Shot MultiBox Detector to Keras framework.</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">Liu, Wei, et al. "Ssd: Single shot multibox detector." European conference on computer vision. Springer, Cham, 2016.</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="http://qiita.com/PonDad/items/6f9e6d9397951cadc6be" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">SSD: Single Shot MultiBox Detector 高速リアルタイム物体検出デモをKerasで試す</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="http://qiita.com/slowsingle/items/64cc927bb29a49a7af14" id="gmail-reference-d9a5fb3fcff8d920fa3a" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">物体検出アルゴリズム(SSD : Single Shot MultiBox Detector)を学習させてみる</a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="http://www.cs.unc.edu/~wliu/papers/ssd_eccv2016_slide.pdf" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">SSD: Single Shot MultiBox Detector</a></p></div><div class="gmail-it-Footer" style="box-sizing:inherit;display:flex;margin-top:64px;margin-bottom:24px"><div class="gmail-it-Footer_actions" style="box-sizing:inherit;display:flex"><div class="gmail-it-Footer_editRequest" style="box-sizing:inherit;margin-right:8px;margin-bottom:16px;padding:0px 16px;color:rgb(255,255,255);background-color:rgb(255,141,0);border-radius:4px;display:flex;height:32px"><a href="https://qiita.com/drafts/8c946208de0d6a4e31e7/edit" class="gmail-u-link-no-underline" style="box-sizing:inherit;text-decoration-line:none;color:inherit"><span class="gmail-fa gmail-fa-fw gmail-fa-send" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;width:1.28571em;text-align:center;margin-right:4px"></span><span style="box-sizing:inherit">編集リクエスト</span></a></div><div class="gmail-it-Footer_stock" style="box-sizing:inherit;display:flex;height:32px;margin-right:8px;margin-bottom:16px"><button style="box-sizing:inherit;margin:0px;color:rgb(255,255,255);border-width:1px;border-style:solid;border-color:rgb(119,119,119);border-radius:4px;background-color:rgb(119,119,119);font-size:1.6rem;height:32px;padding:0px 8px;outline:none"><span class="gmail-fa gmail-fa-folder-open" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;margin-right:4px"></span><span class="gmail-it-Footer_stockLabel" style="box-sizing:inherit;font-size:1.4rem">ストック</span></button></div><div class="gmail-it-Footer_like" style="box-sizing:inherit;display:flex;height:32px;margin-right:8px;margin-bottom:16px"><button style="box-sizing:inherit;margin:0px;color:rgb(85,197,0);border-width:1px;border-style:solid;border-color:rgb(85,197,0);border-radius:4px;background-color:rgb(255,255,255);font-size:1.6rem;height:32px;padding:0px 8px;outline:none"><span class="gmail-fa gmail-fa-fw gmail-fa-thumbs-up" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;width:1.28571em;margin-right:4px"></span><span style="box-sizing:inherit">いいね</span></button><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7/likers" class="gmail-it-Footer_likeCount" style="box-sizing:inherit;text-decoration-line:none;color:rgb(85,197,0);font-weight:700;margin-left:8px">202</a></div></div><div class="gmail-it-Footer_social" style="box-sizing:inherit;display:flex"><div class="gmail-it-Footer_shareButton gmail-it-Footer_shareButton-twitter" style="box-sizing:inherit;margin-left:8px;width:32px;height:32px;border-radius:50%;display:flex;color:rgb(255,255,255);background-color:rgb(170,170,170);font-size:18px"><span class="gmail-fa gmail-fa-twitter" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit"></span></div><div class="gmail-it-Footer_shareButton gmail-it-Footer_shareButton-facebook" style="box-sizing:inherit;margin-left:8px;width:32px;height:32px;border-radius:50%;display:flex;color:rgb(255,255,255);background-color:rgb(170,170,170);font-size:18px"><span class="gmail-fa gmail-fa-facebook" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit"></span></div></div></div><div class="gmail-ai-Container" style="box-sizing:inherit;display:flex;width:804px;padding-top:40px;border-top:1px solid rgb(221,221,221)"><div class="gmail-ai-User" style="box-sizing:inherit;display:flex;width:788px;margin-right:16px"><a href="https://qiita.com/GushiSnow" style="box-sizing:inherit;text-decoration-line:none"><img src="https://qiita-image-store.s3.amazonaws.com/0/10496/profile-images/1473757289" alt="GushiSnow" class="gmail-ai-User_image" style="box-sizing: inherit; height: 60px; max-width: 100%; display: flex; overflow: hidden; border-radius: 0.2em; width: 60px; margin-right: 16px;"></a><div class="gmail-ai-User_body" style="box-sizing:inherit;width:0px;min-width:0px"><div class="gmail-ai-User_header" style="box-sizing:inherit;display:flex;margin-bottom:8px"><a href="https://qiita.com/GushiSnow" class="gmail-ai-User_urlname" style="box-sizing:inherit;text-decoration-line:none;color:inherit;font-size:1.6rem;font-weight:700;margin-right:8px">@GushiSnow</a></div><div class="gmail-ai-User_description" style="box-sizing:inherit;font-size:1.4rem;color:rgb(119,119,119);margin-bottom:4px"></div><div class="gmail-ai-User_footer" style="box-sizing:inherit;margin-top:16px;display:flex"><div style="box-sizing:inherit"><button class="gmail-it-UserFollowButton gmail-it-UserFollowButton-follow" style="box-sizing:inherit;margin:0px;border-width:1px;border-style:solid;border-color:rgb(204,204,204);border-radius:0.1em;font-size:1.4rem;padding:4px 0px;width:120px;background-color:rgb(255,255,255)">フォロー</button></div></div></div></div></div><div style="box-sizing:inherit"><div class="gmail-it-Ads_afterBodyContainer gmail-it-Ads_afterBodyContainer-wide gmail-mt-3" style="box-sizing:inherit;text-align:center"><div class="gmail-it-Ads_afterBodyWrapper gmail-mr-1" style="box-sizing:inherit;display:inline-block;margin-right:8px"><div id="gmail-dfp-slot-after-body-for-pc-left" class="gmail-ad-336x280" style="box-sizing:inherit;width:336px;height:280px"><div id="gmail-google_ads_iframe_/383564218/qiita.com_items-show_under-article-left_0__container__" style="box-sizing:inherit;border:0pt none"></div></div></div><div class="gmail-it-Ads_afterBodyWrapper" style="box-sizing:inherit;display:inline-block"><div id="gmail-dfp-slot-after-body-for-pc-right" class="gmail-ad-336x280" style="box-sizing:inherit;width:336px;height:280px"><div id="gmail-google_ads_iframe_/383564218/qiita.com_items-show_under-article-right_0__container__" style="box-sizing:inherit;border:0pt none;display:inline-block;width:336px;height:280px"></div></div></div></div><div id="gmail-dfp-slot-after-body-for-text-ads" class="gmail-" style="box-sizing:inherit"><div id="gmail-google_ads_iframe_/383564218/p_qiita_textad_0__container__" style="box-sizing:inherit;border:0pt none"></div></div></div></div></div><div class="gmail-p-items_options" style="box-sizing:inherit"><div class="gmail-mt-2" style="box-sizing:inherit;margin-top:16px"><div id="gmail-dfp-slot-sidebar-top" class="gmail-ad-300x250" style="box-sizing:inherit;width:300px;height:250px"><div id="gmail-google_ads_iframe_/383564218/qiita.com_items-show_sidebar-top_0__container__" style="box-sizing:inherit;border:0pt none;display:inline-block;width:300px;height:250px"></div></div></div></div><div class="gmail-p-items_toc" style="box-sizing:inherit;width:300px;max-height:100vh"><div class="gmail-mt-2" style="box-sizing:inherit;margin-top:16px"><div id="gmail-dfp-slot-sidebar-bottom" class="gmail-ad-300x250" style="box-sizing:inherit;width:300px;height:250px"><div id="gmail-google_ads_iframe_/383564218/qiita.com_items-show_sidebar-bottom_0__container__" style="box-sizing:inherit;border:0pt none"></div></div></div><div class="gmail-it-Toc" style="box-sizing:inherit;margin-top:8px"><div class="gmail-it-Toc_nav" style="box-sizing:inherit;overflow-y:auto;max-height:70vh"><ul style="box-sizing:inherit;margin:0px;padding:0px;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E8%AA%B0%E5%90%91%E3%81%91" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">誰向け</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E3%81%8A%E3%81%BE%E3%81%91" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">おまけ</a></li></ul></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E7%9B%AE%E7%9A%84" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">目的</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%85%A8%E4%BD%93%E5%83%8F" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">全体像</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%90%84%E6%89%8B%E6%B3%95" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">各手法</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E6%B7%B1%E5%B1%A4%E5%AD%A6%E7%BF%92%E3%81%AB%E3%82%88%E3%82%8B%E7%89%A9%E4%BD%93%E6%A4%9C%E5%87%BA" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">深層学習による物体検出</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#r-cnn-region" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">R-CNN (Region)</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#fast-r-cnn" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">Fast R-CNN</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92%E6%96%B9%E6%B3%95" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">学習方法</a></li></ul></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#faster-r-cnn" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">Faster R-CNN</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#yolo-you-only-look-once" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">YOLO (You only look once)</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#ssd" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">SSD</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#model%E3%81%AE%E6%AF%94%E8%BC%83" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">modelの比較</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%87%BA%E5%8A%9B%E5%B1%A4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">出力層について</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#choosing-scales-and-aspect-ratios-for-default-boxes" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">Choosing scales and aspect ratios for default boxes</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#hard-negative-mining" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">Hard negative mining</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#data-augmentation" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">Data augmentation</a></li></ul></li></ul></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E5%AE%9F%E8%A3%85%E4%BE%8B" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">具体的な実装例</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#model%E3%81%AE%E7%90%86%E8%A7%A3" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">Modelの理解</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#cnn%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">CNNレイヤー</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E7%89%B9%E5%BE%B4%E3%83%9E%E3%83%83%E3%83%97%E3%82%92%E5%90%88%E4%BD%93%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%83%A8%E5%88%86" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">特徴マップを合体している部分</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E6%9C%80%E7%B5%82%E5%B1%A4" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">最終層</a></li></ul></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AA%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E7%90%86%E8%A7%A3" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">具体的なコードの理解</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AE%E8%A8%98%E8%BF%B0" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">モデルの記述</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#ssd%E3%81%A7%E5%BF%85%E8%A6%81%E3%81%AA%E5%87%A6%E7%90%86%E3%81%AE%E8%A8%98%E8%BF%B0" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">SSDで必要な処理の記述</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">学習</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#iou" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">iou</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#encode_box" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">encode_box</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#assign_boxes" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">assign_boxes</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#ssd_trainingpy" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">ssd_training.py</a></li></ul></li></ul></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92%E3%83%87%E3%83%BC%E3%82%BF" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">学習データ</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E7%8B%AC%E8%87%AA%E3%81%AE%E5%AD%A6%E7%BF%92%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E6%BA%96%E5%82%99%E6%96%B9%E6%B3%95" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">独自の学習データの準備方法</a><ul style="box-sizing:inherit;margin:0px;padding:0px 0px 0px 1em;list-style:none"><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#sip-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">SIP のダウンロードおよびインストール</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#pyqt5%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%8A%E3%82%88%E3%81%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">PyQt5のダウンロードおよびインストール</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#libxml%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">libxmlのインストール</a></li></ul></li></ul></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%AD%A6%E7%BF%92%E6%B8%88%E3%81%BF%E3%83%A2%E3%83%87%E3%83%AB" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">学習済みモデル</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E6%9C%80%E5%BE%8C%E3%81%AB" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">最後に</a></li><li style="box-sizing:inherit;margin:4px 0px;padding:0px;list-style-type:none"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#%E5%8F%82%E8%80%83" style="box-sizing:inherit;text-decoration-line:none;display:block;padding:4px 8px;color:rgb(153,153,153);line-height:1">参考</a></li></ul></div></div></div></div></div><div class="gmail-p-items_wrapper gmail-p-items_wrapper-white" style="box-sizing:inherit;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:14px"><div class="gmail-p-items_container" style="box-sizing:inherit;display:grid;max-width:1280px;margin-right:auto;margin-left:auto;padding-top:24px;padding-bottom:40px"><div class="gmail-p-items_leftDummy" style="box-sizing:inherit;width:80px"></div><div class="gmail-p-items_main" style="box-sizing:inherit;padding:16px"><div class="gmail-p-items_aside gmail-px-5 gmail-p-2@s" style="box-sizing:inherit;padding-right:40px;padding-left:40px"><div id="gmail-logly-lift-4279493" style="box-sizing:inherit"><div id="gmail-logly-lift-widget" style="box-sizing:inherit;width:788px"><div id="gmail-logly-lift-widget-header" style="box-sizing:inherit;font-size:16px;margin-bottom:12px;font-feature-settings:"palt""><span style="box-sizing:inherit">関連記事</span> <span class="gmail-logly-lift-credit gmail-logly-lift-credit2" style="box-sizing:inherit;clear:both;padding:0px 8px 10px;text-align:right"><a href="https://www.logly.co.jp/privacy.html" rel="nofollow" style="box-sizing:inherit;text-decoration-line:none;color:rgb(153,153,153);font-size:11px">Recommended by <span class="gmail-logly-lift-credit-logo" title="logly" style="box-sizing:inherit;display:inline-block;background:url("https://cdn.logly.co.jp/spritesource-s6c20d2e001.png") 0px -110px no-repeat;color:transparent;margin-left:3px;width:68px;height:14px;vertical-align:middle"></span></a></span></div><div id="gmail-logly-lift-widget-content" style="box-sizing:inherit;display:flex"><div class="gmail-logly-lift-ad" style="box-sizing:inherit;display:flex;zoom:1;vertical-align:top;width:788px;margin:5px 0px;padding:0px"><span class="gmail-logly-lift-ad-userIcon" style="box-sizing:inherit;margin-right:8px"><img src="https://cdn.logly.co.jp/recommend/qiita-image-store.s3.amazonaws.com/c40abc301676c852fbcc93870b6699ea." width="18" style="box-sizing: inherit; height: auto; max-width: 100%; border-radius: 2px; width: 18px;"></span><a class="gmail-logly-lift-ad-link" href="https://qiita.com/Qiita/items/c686397e4a0f4f11683d" style="box-sizing:inherit;text-decoration-line:none;margin-right:8px"><span class="gmail-logly-lift-ad-title" style="box-sizing:inherit;font-feature-settings:"palt";color:rgb(51,122,183);font-weight:bold">Markdown記法 チートシート</span></a><span class="gmail-logly-lift-ad-author" style="box-sizing:inherit;color:rgb(153,153,153)">by Qiita</span><img src="https://abc.logly.co.jp/abc?ac=KrdDrA2cBKNimT8Ce1VGcw&pt=1&sp=4279493&st=https%3A%2F%2Fqiita.com&lg=similarity&wd=10661&rd=&ct=4" width="1" height="1" style="box-sizing: inherit; height: 1px; max-width: 100%; width: 1px; top: -32767px; left: -32767px;"></div><div class="gmail-logly-lift-ad" style="box-sizing:inherit;display:flex;zoom:1;vertical-align:top;width:788px;margin:5px 0px;padding:0px"><span class="gmail-logly-lift-ad-userIcon" style="box-sizing:inherit;margin-right:8px"><img src="https://cdn.logly.co.jp/recommend/qiita-image-store.s3.amazonaws.com/89b1896411de3e6f7b829dd5965d1bc3." width="18" style="box-sizing: inherit; height: auto; max-width: 100%; border-radius: 2px; width: 18px;"></span><a class="gmail-logly-lift-ad-link" href="https://qiita.com/sheercat/items/186c71af92c9494ab26f" style="box-sizing:inherit;text-decoration-line:none;margin-right:8px"><span class="gmail-logly-lift-ad-title" style="box-sizing:inherit;font-feature-settings:"palt";color:rgb(51,122,183);font-weight:bold">slack でのいろんな表記方法</span></a><span class="gmail-logly-lift-ad-author" style="box-sizing:inherit;color:rgb(153,153,153)">by sheercat</span></div><div class="gmail-logly-lift-ad" style="box-sizing:inherit;display:flex;zoom:1;vertical-align:top;width:788px;margin:5px 0px;padding:0px"><span class="gmail-logly-lift-ad-userIcon" style="box-sizing:inherit;margin-right:8px"><img src="https://cdn.logly.co.jp/recommend/qiita-image-store.s3.amazonaws.com/45435b1c755227d7643988838c0cf02e." width="18" style="box-sizing: inherit; height: auto; max-width: 100%; border-radius: 2px; width: 18px;"></span><a class="gmail-logly-lift-ad-link" href="https://qiita.com/takeharu/items/bb154a4bc198fb102ff3" style="box-sizing:inherit;text-decoration-line:none;margin-right:8px"><span class="gmail-logly-lift-ad-title" style="box-sizing:inherit;font-feature-settings:"palt";color:rgb(51,122,183);font-weight:bold">【毎日自動更新】Qiitaのデイリーストックランキング!ウィークリーもあるよ</span></a><span class="gmail-logly-lift-ad-author" style="box-sizing:inherit;color:rgb(153,153,153)">by takeharu</span></div><div class="gmail-logly-lift-ad" style="box-sizing:inherit;display:flex;zoom:1;vertical-align:top;width:788px;margin:5px 0px;padding:0px"><span class="gmail-logly-lift-ad-userIcon" style="box-sizing:inherit;margin-right:8px"><img src="https://cdn.logly.co.jp/recommend/qiita-image-store.s3.amazonaws.com/4b1a7c36d8255d07e6d61e4b2e7e5ef0." width="18" style="box-sizing: inherit; height: auto; max-width: 100%; border-radius: 2px; width: 18px;"></span><a class="gmail-logly-lift-ad-link" href="https://qiita.com/shisama/items/5f4c4fa768642aad9e06" style="box-sizing:inherit;text-decoration-line:none;margin-right:8px"><span class="gmail-logly-lift-ad-title" style="box-sizing:inherit;font-feature-settings:"palt";color:rgb(51,122,183);font-weight:bold">Linuxの権限確認と変更(超初心者向け)</span></a><span class="gmail-logly-lift-ad-author" style="box-sizing:inherit;color:rgb(153,153,153)">by shisama</span></div><div class="gmail-logly-lift-ad" style="box-sizing:inherit;display:flex;zoom:1;vertical-align:top;width:788px;margin:5px 0px;padding:0px"><span class="gmail-fa gmail-fa-fw gmail-fa-file-text" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;width:1.28571em;text-align:center;margin-right:8px;color:rgb(85,197,0)"></span><a class="gmail-logly-lift-ad-link" href="https://dsp.logly.co.jp/click?ad=G8GmQLsVMLbKhlWxmixb1ocoGeMyl8D3VHgDAzsahq5tqYcrY0oGL2W_IxqSRs2xMTjmB6TgVT6nE3Wizw3vs2CqucjGWY_wtKXyL2ZrL3nnQ8I7Nz8YKbJyJOGWYqpJLrSkDImjstX6VhjVGeQCpetKfO4zOxmexvOEHLRMDiVy1bl1RAskbNt2z91j9Y-GoZM66aM9RaD1W_AxwQbBr01DV3MSwr1HM_tfTC9sJS6N2lmBL0plD_eEEIIUTXHN2G72V6BPWIYBglU5oQ3TzWZaXjEeyt61Vd9Gq-pWiflcvtBzcNG9Bz1ZgNJIpB_ysJswA4hifua0Ryaazek6kwvVfNwV_tswgMIUhE8Y1a45z4dsRH_0BSYTBDqZuj6tP-XEYAI8__O73-oMtiPnDPA0MDUhBehaaa5oGuApaTPM3dOwLQDCYzsMeHdfmBhvDZKAVoroji4tZ3oIAfOHs5w_U0HA5OE3zHzSe6qV3OaPrLw2RnfSI4T_PvSGusUMzEanQI1IAtcRb8wKQxcXlOmpaLmgR-G3PZESPkFLOcaDkasGMkFvY1_lLJlTeJ_wRypAjH7Ri_FqYKeKbKnExA" target="_blank" rel="nofollow" style="box-sizing:inherit;text-decoration-line:none;margin-right:8px"><span class="gmail-logly-lift-ad-title" style="box-sizing:inherit;font-feature-settings:"palt";color:rgb(51,122,183);font-weight:bold">企業戦略はデータ仮想化で加速する</span> <span class="gmail-logly-lift-ad-adv" style="box-sizing:inherit;color:rgb(153,153,153);margin-left:8px">PR アクティフィオ</span></a><img src="https://b.logly.co.jp/bc?ac=KrdDrA2cBKNimT8Ce1VGcw&ad=1096452" width="1" height="1" style="box-sizing: inherit; height: 1px; max-width: 100%; width: 1px; top: -32767px; left: -32767px;"></div><div class="gmail-logly-lift-ad" style="box-sizing:inherit;display:flex;zoom:1;vertical-align:top;width:788px;margin:5px 0px;padding:0px"><span class="gmail-fa gmail-fa-fw gmail-fa-file-text" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;width:1.28571em;text-align:center;margin-right:8px;color:rgb(85,197,0)"></span><a class="gmail-logly-lift-ad-link" href="https://dsp.logly.co.jp/click?ad=G8GmQLsVMLbKhlWxmixb1ocoGeMyl8D32tgPeYqsIo1fNJogRSpuJ-RjcDzvq_q3msR5eKdaUHpCNW2T7D2rg_I9BRpIWgdMzJPbog1Qyx3IYAzB8K_m_AP1dk5jVgwC6cpbY9iBJfb1591Xcd_sBJtlVA_AM7lQIz__OoCxZgns9_PuvPRmHBtoeX96KpWoObRkZTU6eemuPpJeJ-7SsSmmwBBNbnovkJTPXsKOe2iazYUrpaA04u0ShlBGwf1W9SMIXQAvwzHVXgjoLzYivDjwfKBQ1tn_A6CMLkNXyW2Gk9exOKe0Xt8IBixvxvhy25MiFLEXdoHKtHfvyvaWpj4ruWZrjqkshmNUljPTdahuTvx46I3IUlP3BZZUmVnE_CIxiOdtwm97Q2yKkzigAPorezn0VwiTYXN9ntvKWyk9ry8t0nP7jeZ7-RTvMmCaMDGjpgCvG3rj9Kys9vyUf3tP7tXRZiQsI1Ifpof7YIU" target="_blank" rel="nofollow" style="box-sizing:inherit;text-decoration-line:none;margin-right:8px"><span class="gmail-logly-lift-ad-title" style="box-sizing:inherit;font-feature-settings:"palt";color:rgb(51,122,183);font-weight:bold">スタートアップで "副業" に挑戦!週10時間で月収10万円〜</span> <span class="gmail-logly-lift-ad-adv" style="box-sizing:inherit;color:rgb(153,153,153);margin-left:8px">PR シューマツワーカー</span></a><img src="https://b.logly.co.jp/bc?ac=KrdDrA2cBKNimT8Ce1VGcw&ad=1114565" width="1" height="1" style="box-sizing: inherit; height: 1px; max-width: 100%; width: 1px; top: -32767px; left: -32767px;"></div></div><div class="gmail-logly-lift-clear" style="box-sizing:inherit;clear:both"></div></div></div></div><div class="gmail-p-items_aside gmail-mt-5 gmail-px-5 gmail-p-2@s" style="box-sizing:inherit;margin-top:40px;padding-right:40px;padding-left:40px"><div class="gmail-it-ReferenceList" style="box-sizing:inherit"><div class="gmail-it-ReferenceList_title" style="box-sizing:inherit;font-weight:700;margin-bottom:16px"><span class="gmail-fa gmail-fa-link" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;margin-right:8px"></span>この記事は以下の記事からリンクされています</div><div style="box-sizing:inherit"><div class="gmail-it-Reference gmail-is-shown" style="box-sizing:inherit;display:flex;margin-top:8px;color:rgb(102,102,102)"><img class="gmail-it-Reference_authorImage" src="https://qiita-image-store.s3.amazonaws.com/0/10496/profile-images/1473757289" alt="GushiSnow" style="box-sizing: inherit; height: 20px; max-width: 100%; display: flex; overflow: hidden; border-radius: 0.2em; width: 20px; margin-right: 8px;"><a href="https://qiita.com/GushiSnow/items/470512e5c04fcdfe7c59" class="gmail-it-Reference_articleTitle" style="box-sizing:inherit;text-decoration-line:none;margin-right:4px;color:inherit;font-weight:700">PyTorchで始める物体検出:Yolo 9000 Better, Faster, Stronger</a>からリンク2017-11-14T21:11:00Z</div><div class="gmail-it-Reference gmail-is-shown" style="box-sizing:inherit;display:flex;margin-top:8px;color:rgb(102,102,102)"><img class="gmail-it-Reference_authorImage" src="https://secure.gravatar.com/avatar/4f788e8711d0e1586d8e1385f3584bdd" alt="nanako_ut" style="box-sizing: inherit; height: 20px; max-width: 100%; display: flex; overflow: hidden; border-radius: 0.2em; width: 20px; margin-right: 8px;"><a href="https://qiita.com/nanako_ut/items/13849bd4cc087139a40c" class="gmail-it-Reference_articleTitle" style="box-sizing:inherit;text-decoration-line:none;margin-right:4px;color:inherit;font-weight:700">openCVとKerasで画像から人物検出</a>からリンク2018-04-04T15:23:07Z</div><div class="gmail-it-Reference gmail-is-shown" style="box-sizing:inherit;display:flex;margin-top:8px;color:rgb(102,102,102)"><img class="gmail-it-Reference_authorImage" src="https://qiita-image-store.s3.amazonaws.com/0/62555/profile-images/1523431199" alt="shtamura" style="box-sizing: inherit; height: 20px; max-width: 100%; display: flex; overflow: hidden; border-radius: 0.2em; width: 20px; margin-right: 8px;"><a href="https://qiita.com/shtamura/items/4283c851bc3d9721ed96" class="gmail-it-Reference_articleTitle" style="box-sizing:inherit;text-decoration-line:none;margin-right:4px;color:inherit;font-weight:700">物体検出、セグメンテーションをMask R-CNNで理解してみる (初心者)</a>からリンク2018-04-18T05:04:56Z</div><div class="gmail-it-Reference gmail-is-shown" style="box-sizing:inherit;display:flex;margin-top:8px;color:rgb(102,102,102)"><img class="gmail-it-Reference_authorImage" src="https://qiita-image-store.s3.amazonaws.com/0/38555/profile-images/1473687810" alt="ikeyasu" style="box-sizing: inherit; height: 20px; max-width: 100%; display: flex; overflow: hidden; border-radius: 0.2em; width: 20px; margin-right: 8px;"><a href="https://qiita.com/ikeyasu/items/a95448254dff958a05b5" class="gmail-it-Reference_articleTitle" style="box-sizing:inherit;text-decoration-line:none;margin-right:4px;color:inherit;font-weight:700">機械学習論文読み:SSD / Single Shot Multibox Detector</a>からリンク2018-04-26T01:23:22Z</div><div class="gmail-it-Reference gmail-is-shown" style="box-sizing:inherit;display:flex;margin-top:8px;color:rgb(102,102,102)"><img class="gmail-it-Reference_authorImage" src="https://lh4.googleusercontent.com/-Kzm0nsJKGjU/AAAAAAAAAAI/AAAAAAAAAIs/Mvs049Jj8ug/photo.jpg?sz=50" alt="panchokyutech" style="box-sizing: inherit; height: 20px; max-width: 100%; display: flex; overflow: hidden; border-radius: 0.2em; width: 20px; margin-right: 8px;"><a href="https://qiita.com/panchokyutech/items/2c972ede2bc883597a87" class="gmail-it-Reference_articleTitle" style="box-sizing:inherit;text-decoration-line:none;margin-right:4px;color:inherit;font-weight:700">物体検出における学習モデル評価方法(Python3)</a>からリンク2018-06-18T13:38:57Z</div><div class="gmail-it-ReferenceList_toggle" style="box-sizing:inherit;margin-top:8px"><span class="gmail-fa gmail-fa-expand" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;margin-right:8px"></span>過去の1件を表示する</div></div></div></div><div style="box-sizing:inherit"></div><div class="gmail-p-items_aside gmail-mt-5 gmail-px-5 gmail-p-2@s" id="gmail-comments-wrapper" style="box-sizing:inherit;margin-top:40px;padding-right:40px;padding-left:40px"><div id="gmail-comments" class="gmail-co-ItemWrapper" style="box-sizing:inherit;width:788px"><div class="gmail-co-ItemWrapper_title" style="box-sizing:inherit;font-weight:700;font-size:1.8rem"><span class="gmail-fa gmail-fa-comments gmail-mr-1" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;margin-right:8px"></span>コメント</div><div class="gmail-co-Item_header" style="box-sizing:inherit;display:flex;margin-bottom:16px"><div class="gmail-u-flex-align-center" style="box-sizing:inherit;display:flex"><img class="gmail-co-Item_userImage" src="https://qiita-image-store.s3.amazonaws.com/0/201397/profile-images/1522849547" alt="a2kiti" style="box-sizing: inherit; height: 32px; max-width: 100%; border-radius: 3px; width: 32px; margin-right: 8px;"><a href="https://qiita.com/a2kiti" class="gmail-co-Item_username" style="box-sizing:inherit;text-decoration-line:none;color:inherit">@a2kiti</a></div><div class="gmail-u-flex-align-center" style="box-sizing:inherit;display:flex"><a href="https://qiita.com/GushiSnow/items/8c946208de0d6a4e31e7#comment-eba992e39d6d8fafb223" style="box-sizing:inherit;text-decoration-line:none">2018-11-23 18:16</a><div class="gmail-co-Item_dropdown" style="box-sizing:inherit"><span class="gmail-co-Item_subAction" style="box-sizing:inherit;color:rgb(119,119,119)"><span class="gmail-fa gmail-fa-ellipsis-h" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit"></span></span></div></div></div><div class="gmail-co-Item_text" style="box-sizing:inherit;margin-bottom:16px;font-size:1.4rem"><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">非常にわかりやすい記事をありがとうございます。<br style="box-sizing:inherit">バウデンィングボックスを定義しているprior_boxes_ssd300.pklについて教えていただきたいのですが,<br style="box-sizing:inherit">これはネットワーク構成に応じて決めるもので,<br style="box-sizing:inherit">PriorBoxレイヤーで生成されるpredictions中のmbox_priorboxと同じものでないかと思います。<br style="box-sizing:inherit">わざわざ別ファイルを読み込まなくても,<br style="box-sizing:inherit">例えば学習前に一度仮の予測結果を出力させて,</p><div class="gmail-code-frame" style="box-sizing:inherit;margin:1.5em 0px;padding:1em;font-size:0.9em;background-color:rgb(54,69,73);color:rgb(227,227,227)"><div class="gmail-highlight" style="box-sizing:inherit;padding:0.5em;overflow-x:auto"><pre style="box-sizing:inherit;margin-top:0px;margin-bottom:0px;padding:0px;font-size:inherit;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace;color:inherit;background-color:transparent;border:none;border-radius:0px;line-height:1.8"><span class="gmail-n" style="box-sizing:inherit">model</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">SSD300</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">input_shape</span><span class="gmail-p" style="box-sizing:inherit">,</span> <span class="gmail-n" style="box-sizing:inherit">num_classes</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span><span class="gmail-n" style="box-sizing:inherit">NUM_CLASSES</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">im_tmp</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">np</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">zeros</span><span class="gmail-p" style="box-sizing:inherit">(</span> <span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">,</span><span class="gmail-n" style="box-sizing:inherit">input_shape</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">],</span><span class="gmail-n" style="box-sizing:inherit">input_shape</span><span class="gmail-p" style="box-sizing:inherit">[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">1</span><span class="gmail-p" style="box-sizing:inherit">],</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">3</span><span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-p" style="box-sizing:inherit">)</span> <span class="gmail-n" style="box-sizing:inherit">priorsByModel</span> <span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">=</span> <span class="gmail-n" style="box-sizing:inherit">model</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">.</span><span class="gmail-n" style="box-sizing:inherit">predict</span><span class="gmail-p" style="box-sizing:inherit">(</span><span class="gmail-n" style="box-sizing:inherit">im_tmp</span><span class="gmail-p" style="box-sizing:inherit">)[</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">0</span><span class="gmail-p" style="box-sizing:inherit">,:,</span><span class="gmail-mi" style="box-sizing:inherit;color:rgb(169,128,245)">4</span><span class="gmail-o" style="box-sizing:inherit;color:rgb(255,128,149)">+</span><span class="gmail-n" style="box-sizing:inherit">NUM_CLASSES</span><span class="gmail-p" style="box-sizing:inherit">:]</span> </pre></div></div><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">のようにすれば自動的に取得できると思うのですが,<br style="box-sizing:inherit">この理解であってますでしょうか?</p></div></div></div></div></div></div></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-59491183395540242982018-11-25T17:47:00.000+09:002018-11-25T17:48:56.757+09:00Mask R-CNNを簡単にカメラ映像から試す方法<div dir="ltr"><div dir="ltr"><a href="https://github.com/matterport/Mask_RCNN">https://github.com/matterport/Mask_RCNN</a><br></div><div dir="ltr"><h2 style="margin:0px 0px 10px;padding:10px 0px 0px;border:0px;outline:0px;font-size:25.2px;vertical-align:baseline;clear:both;line-height:1.2;font-weight:400;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif"><span id="gmail-GitHubMask_R-CNN" style="margin:0px;padding:0px;border:0px;outline:0px;font-size:25.2px;vertical-align:baseline">GitHubからMask R-CNNのソースコードをダウンロード</span></h2><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">まずはMask R-CNNを紹介している<a href="https://github.com/matterport/Mask_RCNN" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;color:rgb(255,64,1);text-decoration-line:none">GitHub</a>からソースコードをダウンロードしましょう。</p><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">ダウンロードしたフォルダ内に、「demo.ipynb」があるので、何も考えずにjupyter notebookで実行してみましょう。</p><h2 style="margin:0px 0px 10px;padding:10px 0px 0px;border:0px;outline:0px;font-size:25.2px;vertical-align:baseline;clear:both;line-height:1.2;font-weight:400;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif"><span id="gmail-Mask_R-CNN-2" style="margin:0px;padding:0px;border:0px;outline:0px;font-size:25.2px;vertical-align:baseline">映像からのMask R-CNN</span></h2><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">続いてカメラ映像からのMask R-CNNを試してみましょう。</p><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">PC内蔵カメラからでも動画からでも実行できます。</p><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">ソースコードを適当に作成してみました。</p><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">とりあえず動けばなんでも良い感じで作成しています。</p><div id="gmail-crayon-5bf8eaa3ad8f7283209305" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:800px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(51,51,51);height:auto;font-size:12px;overflow:hidden;direction:ltr;background:rgb(253,253,253);line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:798px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit">camera Mask R-CNN</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:-24px 0px no-repeat rgb(188,188,188);height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:url("../images/toolbar/buttons.png") -24px -32px;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:url("../images/toolbar/buttons.png") 0px -48px;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:url("../images/toolbar/buttons.png") 0px -112px;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:url("../images/toolbar/buttons.png") 0px -16px;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:url("../images/toolbar/buttons.png") 0px 0px;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="outline:0px;box-sizing:border-box;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-radius:0px;width:798px;overflow:hidden;padding:0px 5px;height:2029px;opacity:0;border-width:0px;border-style:initial;border-color:initial;white-space:pre;color:rgb(0,0,0);font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:798px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;padding:0px;border:none;border-collapse:collapse;border-spacing:0px;width:auto;background:none;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;line-height:2.2;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace;background:rgb(223,239,255);color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">1</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">2</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">3</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">4</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">5</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">6</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">7</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">8</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">9</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">10</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">11</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">12</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">13</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">14</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">15</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">16</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">17</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">18</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">19</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">20</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">21</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">22</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">23</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">24</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">25</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">26</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">27</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">28</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">29</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">30</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">31</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">32</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">33</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">34</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">35</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">36</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">37</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">38</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">39</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">40</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">41</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">42</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">43</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">44</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">45</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">46</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">47</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">48</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">49</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">50</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">51</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">52</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">53</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">54</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">55</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">56</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">57</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">58</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">59</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">60</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">61</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">62</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">63</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">64</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">65</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">66</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">67</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">68</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">69</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">70</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">71</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">72</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">73</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">74</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">75</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">76</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">77</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">78</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">79</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">80</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">81</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">82</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">83</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">84</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">85</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">86</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">87</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">88</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">89</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">90</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">91</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">92</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">93</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">94</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">95</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">96</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">97</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">98</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">99</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">100</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">101</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">102</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">103</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">104</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">105</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">106</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">107</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">108</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">109</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">110</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">111</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">112</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">113</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">114</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">115</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">116</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">117</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">118</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">119</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">120</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">121</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">122</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">123</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">124</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">125</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">126</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">127</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">128</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">129</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">130</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">131</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">132</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">133</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">134</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;line-height:2.2;width:766px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-1" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-2" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">sys</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-3" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">random</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-4" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">math</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-5" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">numpy </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">as</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">np</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-6" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">skimage</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">io</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-7" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">matplotlib</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-8" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">matplotlib</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">pyplot </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">as</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">plt</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-9" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-10" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">coco</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-11" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">utils</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-12" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">model </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">as</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">modellib</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-13" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-14" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">cv2</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-15" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">colorsys</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-16" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-17" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ROOT_DIR</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">getcwd</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-18" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">MODEL_DIR</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os.path</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">join</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ROOT_DIR</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"logs"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-19" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-20" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">COCO_MODEL_PATH</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os.path</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">join</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ROOT_DIR</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"mask_rcnn_coco.h5"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-21" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">not</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os.path</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">exists</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">COCO_MODEL_PATH</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-22" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">utils</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">download_trained_weights</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">COCO_MODEL_PATH</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-23" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-24" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">class</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">InferenceConfig</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">coco</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">CocoConfig</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-25" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">GPU_COUNT</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-26" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">IMAGES_PER_GPU</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-27" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-28" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">config</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">InferenceConfig</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-29" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-30" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">modellib</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">MaskRCNN</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">mode</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"inference"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model_dir</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">MODEL_DIR</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">config</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">config</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-31" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">load_weights</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">COCO_MODEL_PATH</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">by_name</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">True</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-32" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-33" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_names</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'BG'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'person'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bicycle'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'car'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'motorcycle'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'airplane'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-34" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bus'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'train'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'truck'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'boat'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'traffic light'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-35" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'fire hydrant'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'stop sign'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'parking meter'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bench'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bird'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-36" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'cat'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'dog'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'horse'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'sheep'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'cow'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'elephant'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bear'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-37" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'zebra'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'giraffe'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'backpack'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'umbrella'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'handbag'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'tie'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-38" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'suitcase'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'frisbee'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'skis'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'snowboard'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'sports ball'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-39" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'kite'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'baseball bat'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'baseball glove'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'skateboard'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-40" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'surfboard'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'tennis racket'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bottle'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'wine glass'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'cup'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-41" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'fork'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'knife'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'spoon'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bowl'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'banana'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'apple'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-42" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'sandwich'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'orange'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'broccoli'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'carrot'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'hot dog'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'pizza'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-43" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'donut'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'cake'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'chair'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'couch'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'potted plant'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'bed'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-44" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'dining table'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'toilet'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'tv'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'laptop'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'mouse'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'remote'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-45" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'keyboard'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'cell phone'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'microwave'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'oven'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'toaster'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-46" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'sink'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'refrigerator'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'book'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'clock'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'vase'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'scissors'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-47" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'teddy bear'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'hair drier'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'toothbrush'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-48" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-49" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)">#cap = cv2.VideoCapture("1.mp4")</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-50" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cap</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">VideoCapture</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-51" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-52" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">height</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">720</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-53" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">width</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1280</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-54" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-55" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">def</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">random_colors</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">bright</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">True</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-56" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">brightness</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1.0</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">bright </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">else</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0.7</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-57" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hsv</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">/</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">brightness</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">for</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-i" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">i</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">in</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">range</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-58" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">colors</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">list</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">map</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">lambda</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">c</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">colorsys</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">hsv_to_rgb</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">c</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hsv</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-59" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">random</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">shuffle</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">colors</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-60" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">return</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">colors</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-61" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-62" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">def</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">apply_mask</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">mask</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">alpha</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0.5</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-63" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">for</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-i" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">c</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">in</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">range</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">3</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-64" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">c</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">np</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">where</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">mask</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">==</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-65" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">c</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-66" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">alpha</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">alpha</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">c</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-67" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">c</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-68" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">return</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">image</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-69" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-70" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">def</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">display_instances</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxes</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masks</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_ids</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_names</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-71" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">scores</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">None</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">title</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">""</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-72" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">figsize</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">16</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">16</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ax</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">None</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-73" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxes</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">shape</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-74" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">not</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-75" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"\n*** No instances to display *** \n"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-76" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">else</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-77" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">assert</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxes</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">shape</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">==</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masks</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">shape</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">==</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_ids</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">shape</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-78" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-79" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">colors</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">random_colors</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-80" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-81" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masked_image</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">copy</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-82" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">for</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-i" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">i</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">in</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">range</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">N</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-83" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">colors</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-84" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-85" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># Bounding box</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-86" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">not</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">np</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">any</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxes</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-87" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">continue</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-88" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">y1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">y2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x2</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxes</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-89" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera_color</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-90" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">rectangle</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masked_image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">y1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">y2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">_</span>color<span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-91" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-92" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># Label</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-93" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_id</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_ids</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-94" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">score</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">scores</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">scores </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">is</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">not</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">None</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">else</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">None</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-95" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">label</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_names</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_id</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-96" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">random</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">randint</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x1</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">/</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">/</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-97" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">caption</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"{} {:.3f}"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">label</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">score</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">score </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">else</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">label</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-98" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera_font</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">FONT_HERSHEY_PLAIN</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-99" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">putText</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masked_image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">caption</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">x1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">y1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera_font</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera_color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-100" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-101" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># Mask</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-102" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">mask</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masks</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-103" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masked_image</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">apply_mask</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masked_image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">mask</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">color</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-104" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-105" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">return</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">masked_image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">astype</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">np</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">uint8</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-106" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-107" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">def</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">main</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-108" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">while</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">True</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-109" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-110" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># 動画ストリームからフレームを取得</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-111" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ret</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">frame</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cap</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">read</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-112" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-113" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># カメラ画像をリサイズ</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-114" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image_cv2</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">resize</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">frame</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">width</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">height</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-115" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-116" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">results</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">detect</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image_cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-117" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-118" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">r</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">results</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-119" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">display_instances</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image_cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">r</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'rois'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">r</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'masks'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">r</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'class_ids'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-120" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">class_names</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">r</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'scores'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-121" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-122" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">imshow</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"camera window"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">camera</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-123" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-124" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># escを押したら終了。</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-125" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">waitKey</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">==</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">27</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-126" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">break</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-127" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-128" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)">#終了</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-129" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cap</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">release</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-130" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">destroyAllWindows</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-131" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-132" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-133" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;background:0px 50%;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">__name__</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">==</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">'__main__'</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8eaa3ad8f7283209305-134" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">main</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">cap</span> <span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">=</span> <span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">VideoCapture</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">)を指定していますので、PC内臓のwebカメラが起動するはずです。</span></p><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">動画にしたい場合は、<span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">cap</span> <span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">=</span> <span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">VideoCapture</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">('move.mp4'</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline">)といった指定をすれば、動画でもMask R-CNNを試せます。</span></p><p style="margin:0px 0px 2em;padding:0px;border:0px;outline:0px;font-size:18px;vertical-align:baseline;line-height:2.4;color:rgb(51,51,51);font-family:Arial,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 ProN W3","Hiragino Kaku Gothic ProN",メイリオ,Meiryo,sans-serif">興味がある方はぜひ挑戦してみてください。</p></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-17292053384074274652018-11-24T11:33:00.000+09:002018-11-24T11:34:55.327+09:00最新の物体検出手法Mask R-CNNのRoI AlignとFast(er) R-CNNのRoI Poolingの違いを正しく理解する<div dir="ltr"><div dir="ltr"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8">https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8</a><br></div><div dir="ltr"><br></div><div dir="ltr"><div id="gmail-item-5cbe9db166a5d72f9eb8" style="box-sizing:inherit;margin-top:0px"><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)">はじめに</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">CNNベースの高速な物体検出の先駆けであるFast R-CNN<sup id="gmail-fnref1" style="box-sizing:inherit"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fn1" rel="footnote" title="R. Girshick, "Fast R-CNN," in Proc. of ICCV, 2015." style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">1</a></sup>やFaster R-CNN<sup id="gmail-fnref2" style="box-sizing:inherit"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fn2" rel="footnote" title="S. Ren, K. He, R. Girshick, J. Sun, "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks," in Proc. of NIPS, 2015." style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">2</a></sup>、最新のMask R-CNN<sup id="gmail-fnref3" style="box-sizing:inherit"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fn3" rel="footnote" title="Mask R-CNN, "K. He, G. Gkioxari, P. Dollar, and R. Girshick, in Proc. of ICCV, 2017." style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">3</a></sup>では、まず物体の候補領域をregion proposalとして検出し、そのregion proposalが実際に認識対象の物体であるか、認識対象であればどのクラスかであるかを推定します。<br style="box-sizing:inherit">Fast R-CNN系の手法のベースとなったR-CNN<sup id="gmail-fnref4" style="box-sizing:inherit"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fn4" rel="footnote" title="R. Girshick, J. Donahue, T. Darrell, and J. Malik, "Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation," in Proc. of CVPR, 2014." style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">4</a></sup>では、region proposalの領域を入力画像から切り出し、固定サイズの画像にリサイズしてからクラス分類用のCNNにかけるという処理を行っていたため、大量のregion proposalを0からCNNにかける必要があり、非常に低速でした。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/cef327e9aebc806911f5205c857bbefedf7eef2f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f30636466333961642d636133312d353337372d383763332d3038396266373864656138312e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img width="480" src="https://camo.qiitausercontent.com/cef327e9aebc806911f5205c857bbefedf7eef2f/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f30636466333961642d636133312d353337372d383763332d3038396266373864656138312e706e67" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a><br style="box-sizing:inherit"><sup id="gmail-fnref1" style="box-sizing:inherit"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fn1" rel="footnote" title="R. Girshick, "Fast R-CNN," in Proc. of ICCV, 2015." style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">1</a></sup>より引用。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">これに対し、Fast(er) R-CNNでは、ある程度畳み込み処理を行ったfeature mapから、region proposalにあたる部分領域をうまく「固定サイズのfeature map」として抽出するRoI Poolingを行うことで、前段の畳込み処理を共通化し、高速化を実現しています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">しかしながら、RoI Poolingの対象となっているfeature mapは入力画像と比較して解像度が低いため、RoI Poolingされた領域が実際に対応している画像領域が、元々のregion proposalの画像領域とずれてしまうという問題がありました。<br style="box-sizing:inherit">最新のMask R-CNN<sup id="gmail-fnref3" style="box-sizing:inherit"><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fn3" rel="footnote" title="Mask R-CNN, "K. He, G. Gkioxari, P. Dollar, and R. Girshick, in Proc. of ICCV, 2017." style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">3</a></sup>では、この問題を解決するRoI Alignが提案されています。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">何気にRoI AlignやRoI Poolingについて、あまり詳細な説明を見たことがない(英語でも雑なのが多い)ので、本稿ではこれらの処理について細かく説明したいと思います。</p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-roi-pooling" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#roi-pooling" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>RoI Pooling</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">RoI Poolingでは、ある程度畳み込み処理を行ったfeature mapから、region proposalにあたる部分領域をうまく「固定サイズのfeature map」として抽出します。<br style="box-sizing:inherit">ここでは説明のため、入力画像サイズを320x480とし、これを解像度が1/32になるCNNにかけることで、10x15のfeature mapが得られたとし、RoI Poolの結果として3x3のfeature mapを抽出したいとします(通常RoI Poolingの出力としては7x7のfeature mapが利用されますが、説明のため3x3としています)。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/8cf05cf36d952981add1dbf70b0cafa01731adfe/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f63383161356163372d663135392d303835382d653162642d6537326664343262646363392e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img width="640" src="https://camo.qiitausercontent.com/8cf05cf36d952981add1dbf70b0cafa01731adfe/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f63383161356163372d663135392d303835382d653162642d6537326664343262646363392e706e67" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">上記の図のように、元画像のregion proposalの領域を、feature map上に投影してみると、当然feature mapとサブピクセルレベルのずれが発生します。<br style="box-sizing:inherit">RoI Poolingでは、このずれを丸め込みながらPoolingを行います。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/ab088881a617422c99b40610f357cad4ac0037b7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f39616366363937312d363263332d383265312d656136312d3562613062623736393862312e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img width="360" src="https://camo.qiitausercontent.com/ab088881a617422c99b40610f357cad4ac0037b7/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f39616366363937312d363263332d383265312d656136312d3562613062623736393862312e706e67" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">具体的にはまず、region proposalの座標を整数値に丸め、上記の赤い外接矩形を得ます。この時点で、最大0.5ピクセルのずれが発生します。これは、元画像ではCNNのstrideの半分に相当し、今回の例では32/2=16ピクセルのずれに相当します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">その後、その外接矩形をfeature mapのサイズと同じビン数(ここでは3x3)に等分割します。そして、feature mapのRoI内のピクセルを、それぞれ3x3つのビンのいずれかに割り当て、割り当てられたビンの中でmaxやaverageを取ることで、RoI Poolingの出力を得ます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">上図では、市松模様でfeature mapの各ピクセルの割り当てを表現しています。丸め方やピクセルの割り当て方は色々な方法が考えられます(切り捨ててしまうとか)が、上記の図のような形が誤差を小さくできるのではないでしょうか。<br style="box-sizing:inherit">(こちらの<a href="https://www.youtube.com/watch?v=XGi-Mz3do2s" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">動画</a>では、RoIの取得時や、3x3の分割時に切り捨てを行う説明になっているので、かなり誤差があるように見えてしまいますが、オリジナルの論文でも"round"という表記をしています)</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">何れにせよ、RoIの取得と、ピクセルの割り当て時に丸め誤差が発生し、これがセグメンテーションなどの位置ずれがあまり許されないアプリケーションでは問題になります。</p><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-roi-align" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#roi-align" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>RoI Align</h1><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">上記のRoI Poolingの問題を解決するのがRoI Alignです。こちらのほうがstraight forwardでアルゴリズムとして分かりやすいです。<br style="box-sizing:inherit">RoI Alignでは、まずregion proposalの領域をそのまま3x3に等分割します。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><a href="https://camo.qiitausercontent.com/ad51aede3139b16e684fec813def4034b5763519/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f64306366326635362d363866382d353836632d313436392d3233373666656338323964392e706e67" target="_blank" rel="nofollow noopener" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"><img width="600" src="https://camo.qiitausercontent.com/ad51aede3139b16e684fec813def4034b5763519/68747470733a2f2f71696974612d696d6167652d73746f72652e73332e616d617a6f6e6177732e636f6d2f302f3133393830392f64306366326635362d363866382d353836632d313436392d3233373666656338323964392e706e67" style="box-sizing: inherit; height: auto; max-width: 100%; margin: 1.5em 0px;"></a></p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">そして、サブピクセル座標を持つ上記のグリッド点の値を、feature mapの近傍4ピクセルから<a href="https://en.wikipedia.org/wiki/Bilinear_interpolation" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">bilinear interpolation</a>を用いて算出します。最後に、各ビンに対応する4つのグリッド点の値をmaxまたはaverageでpoolingすることで、RoI Alignの出力を得ます。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9"><del style="box-sizing:inherit">なお、上記のグリッド点をどうとるかは論文中には明記されておらず、下記の記述からの推測になります。ここは実装を確認して情報をアップデートしたいと思います。</del><br style="box-sizing:inherit">著者らの資料にグリッドの取り方があったので修正しました!</p><blockquote style="box-sizing:inherit;margin:1.5em 0px;padding:1em 0px 1em 1em;border-left:5px solid rgb(221,221,221);color:rgb(119,119,119)"><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">compute the exact values of the input features at four regularly sampled locations in each RoI bin</p></blockquote><span class="gmail-twitter-tweet gmail-twitter-tweet-rendered" id="gmail-twitter-widget-0" style="box-sizing:inherit;display:block;max-width:100%;width:500px;min-width:220px;margin-top:10px;margin-bottom:10px"><div class="gmail-SandboxRoot env-bp-350" style="max-height:10000px;direction:ltr;background:0px 0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:16px;line-height:1.4;font-family:Helvetica,Roboto,"Segoe UI",Calibri,sans-serif;color:rgb(28,32,34);white-space:initial"><div class="gmail-EmbeddedTweet gmail-EmbeddedTweet--cta gmail-EmbeddedTweet--mediaForward gmail-media-forward gmail-js-clickToOpenTarget gmail-js-tweetIdInfo gmail-tweet-InformationCircle-widgetParent" id="gmail-twitter-widget-0" lang="en" style="overflow:hidden;border:0px;border-radius:5px;max-width:520px"><div class="gmail-MediaCard-mediaContainer gmail-js-cspForcedStyle" style="padding-bottom:250px;background-color:rgb(245,248,250)"><a class="gmail-MediaCard-borderOverlay" href="https://twitter.com/shinya7y/status/915201426959171584/photo/1" tabindex="-1" title="" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;width:500px;height:250px;border:1px solid rgba(225,232,237,0.75);border-radius:4px 4px 0px 0px;box-sizing:border-box;outline:0px"><span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px"></span></a><div class="gmail-MediaCard-mediaAsset gmail-ImageGrid gmail-ImageGrid--3 gmail-ImageGrid--roundedTop" style="width:500px;height:250px;line-height:0;background-color:rgb(255,255,255)"><a href="https://twitter.com/shinya7y/status/915201426959171584/photo/1" class="gmail-ImageGrid-image gmail-ImageGrid-image-0 gmail-CroppedImage gmail-CroppedImage--fillHeight" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:inline-block;overflow:hidden;width:250px;padding-bottom:250px;border:0px solid rgb(225,232,237);outline:0px;float:left;border-top-left-radius:4px"><img class="gmail-CroppedImage-image gmail-js-cspForcedStyle" width="1200" height="675" alt="View image on Twitter" title="View image on Twitter" src="https://pbs.twimg.com/media/DLNxd9DUEAAY19w?format=jpg&name=360x360" style="border: 0px; top: 0px; left: -105px; min-height: 100%; min-width: 100%; height: 250px; width: auto;"></a><a href="https://twitter.com/shinya7y/status/915201426959171584/photo/1" class="gmail-ImageGrid-image gmail-ImageGrid-image-1 gmail-CroppedImage gmail-CroppedImage--fillWidth" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:inline-block;overflow:hidden;width:250px;padding-bottom:125px;border-width:0px 0px 0px 1px;border-style:solid;border-color:rgb(225,232,237);outline:0px;border-top-right-radius:4px"><img class="gmail-CroppedImage-image gmail-js-cspForcedStyle" width="1200" height="675" alt="View image on Twitter" title="View image on Twitter" src="https://pbs.twimg.com/media/DLNxfIrUIAAmULN?format=jpg&name=360x360" style="border: 0px; top: -15px; left: 0px; min-height: 100%; min-width: 100%; width: 250px; height: auto;"></a><a href="https://twitter.com/shinya7y/status/915201426959171584/photo/1" class="gmail-ImageGrid-image gmail-ImageGrid-image-2 gmail-CroppedImage gmail-CroppedImage--fillWidth" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:inline-block;overflow:hidden;width:250px;padding-bottom:125px;border-width:1px 0px 0px 1px;border-style:solid;border-color:rgb(225,232,237);outline:0px"><img class="gmail-CroppedImage-image gmail-js-cspForcedStyle" width="907" height="679" alt="View image on Twitter" title="View image on Twitter" src="https://pbs.twimg.com/media/DLNxggIVwAAB-N9?format=jpg&name=360x360" style="border: 0px; top: -60px; left: 0px; min-height: 100%; min-width: 100%; width: 250px; height: auto;"></a></div></div><div class="gmail-EmbeddedTweet-tweetContainer"><div class="gmail-EmbeddedTweet-tweet" style="padding:14.4px 20px 10px;border-style:solid solid none;border-top-color:rgb(225,232,237);border-right-color:rgb(225,232,237);border-bottom-color:initial;border-left-color:rgb(225,232,237);border-top-width:0px;border-right-width:1px;border-bottom-width:initial;border-left-width:1px;border-radius:0px"><blockquote class="gmail-Tweet gmail-h-entry gmail-js-tweetIdInfo gmail-subject expanded" cite="https://twitter.com/shinya7y/status/915201426959171584" style="margin:0px;padding:0px;list-style:none;border:none"><div class="gmail-Tweet-header" style="display:flex"><a class="gmail-TweetAuthor-avatar gmail-Identity-avatar gmail-u-linkBlend" href="https://twitter.com/shinya7y" style="background-color:transparent;color:inherit;text-decoration:inherit;height:36px;margin-right:9px;outline:0px;font-weight:inherit"><img class="gmail-Avatar" alt="" src="https://pbs.twimg.com/profile_images/716138305872486400/CrQCQQo7_normal.png" style="border: 0px; max-width: 100%; max-height: 100%; border-radius: 50%;"></a><div class="gmail-TweetAuthor gmail-js-inViewportScribingTarget" style="display:flex;overflow:hidden"><a class="gmail-TweetAuthor-link gmail-Identity gmail-u-linkBlend" href="https://twitter.com/shinya7y" style="background-color:transparent;color:inherit;text-decoration:inherit;display:flex;outline:0px;font-weight:inherit"><div class="gmail-TweetAuthor-nameScreenNameContainer" style="display:flex;line-height:1.2;min-width:0px"><span class="gmail-TweetAuthor-decoratedName" style="display:flex;min-width:0px"><span class="gmail-TweetAuthor-name gmail-Identity-name gmail-customisable-highlight" title="Yosuke Shinya" style="font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:4px">Yosuke Shinya</span></span><span class="gmail-TweetAuthor-screenName gmail-Identity-screenName" title="@shinya7y" dir="ltr" style="color:rgb(105,120,130);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">@shinya7y</span></div></a></div><div class="gmail-Tweet-brand" style="margin-left:auto"><a href="https://twitter.com/shinya7y/status/915201426959171584" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;outline:0px"><span class="gmail-FollowButton-bird"><div class="gmail-Icon gmail-Icon--twitter" title="View on Twitter" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em"></div></span></a></div></div><div class="gmail-Tweet-body gmail-e-entry-content" style="margin-top:14px"><div class="gmail-u-hiddenVisually gmail-js-inViewportScribingTarget" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px"></div><p class="gmail-Tweet-text gmail-e-entry-title" lang="ja" dir="ltr" style="margin:0px;padding:0px;list-style:none;border:none;white-space:pre-wrap;direction:ltr">Ross Girshickさんの資料を見る限り、Mask R-CNNのRoIAlignは、14x14のbinの中央から値を取って、mask branchにはそのまま、検出にはpooling噛まして食わせれば良いだろうし、猫が可愛い <a href="https://t.co/FWFhpuxqZv" rel="nofollow noopener" dir="ltr" class="gmail-link gmail-customisable" target="_blank" title="http://deeplearning.csail.mit.edu/instance_ross.pdf" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;outline:0px"><span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">http://</span>deeplearning.csail.mit.edu/instance_ross.<span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">pdf </span>…</a></p><div class="gmail-TweetInfo" style="display:flex;margin-top:3.2px;font-size:14px"><div class="gmail-TweetInfo-like"><a class="gmail-TweetInfo-heart" title="Like" href="https://twitter.com/intent/like?tweet_id=915201426959171584" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:flex;outline:0px"><div class="gmail-Icon gmail-Icon--heart gmail-TweetInfo-heartIcon" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em"></div><span class="gmail-TweetInfo-heartStat" style="margin-left:3px">27</span></a></div><div class="gmail-TweetInfo-timeGeo" style="margin-left:12px;color:rgb(105,120,130)"><a class="gmail-u-linkBlend gmail-u-url gmail-customisable-highlight gmail-long-permalink" href="https://twitter.com/shinya7y/status/915201426959171584" style="background-color:transparent;color:inherit;text-decoration:inherit;outline:0px;font-weight:inherit">10:06 PM - Oct 3, 2017</a></div></div></div></blockquote></div><a class="gmail-CallToAction gmail-CallToAction--mediaForward" title="View Yosuke Shinya's profile on Twitter" href="https://twitter.com/shinya7y" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:flex;border-color:rgb(225,232,237);border-style:solid;border-radius:0px 0px 4px 4px;border-width:1px;padding:9px 20px;font-size:14px;outline:0px"><div class="gmail-CallToAction-icon gmail-Icon gmail-Icon--profileCTA" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em"></div><span class="gmail-CallToAction-text" style="margin-left:4px">See Yosuke Shinya's other Tweets</span><div class="gmail-Icon gmail-Icon--chevronRightCTA gmail-CallToAction-chevron" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em;margin-left:auto"></div></a></div><div class="gmail-tweet-InformationCircle--top gmail-tweet-InformationCircle" style="margin:0px;line-height:0;padding:6px 6px 5px 5px"><a href="https://support.twitter.com/articles/20175256" class="gmail-Icon gmail-Icon--informationCircleWhite gmail-js-inViewportScribingTarget" title="Twitter Ads info and privacy" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:inline-block;height:18px;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:18px;outline:0px"><span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">Twitter Ads info and privacy</span></a></div></div><div class="gmail-resize-sensor" style="overflow:hidden"><div class="gmail-resize-sensor-expand" style="overflow:hidden"><div style="width:510px;height:484px"></div></div><div class="gmail-resize-sensor-shrink" style="overflow:hidden"><div style="width:1000px;height:947.156px"></div></div></div></div></span><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9">ちなみに、より単純には、各ビンの中心座標の値をbilinear interpolationし、その値をそのまま利用することも同じように有効だと本文には記載があります。RoIがfeature mapに対して小さい場合には、こちらのほうが良い気すらします。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">しかし、この辺りの処理は、feature mapを画像だと見立てると、サブピクセルレベルの画像のリサイズの問題であり、画像処理屋さんからするともっと良いソリューションがあるかもしれません(back propできる処理である必要がありますが)。</p><p style="box-sizing:inherit;margin:1.5em 0px 0px;padding:0px;line-height:1.9">ちなみにTensorFlow実装ではRoI Poolingの代わりにresizeが使われているらしいですが、リサイズのアルゴリズムによっては、RoI PoolingよりもRoI Align的な結果が得られ、精度的にも良いとかあるかもしれません。</p><span class="gmail-twitter-tweet gmail-twitter-tweet-rendered" id="gmail-twitter-widget-1" style="box-sizing:inherit;display:block;max-width:100%;width:500px;min-width:220px;margin-top:10px;margin-bottom:10px"><div class="gmail-SandboxRoot env-bp-350" style="max-height:10000px;direction:ltr;background:0px 0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:16px;line-height:1.4;font-family:Helvetica,Roboto,"Segoe UI",Calibri,sans-serif;color:rgb(28,32,34);white-space:initial"><div class="gmail-EmbeddedTweet gmail-EmbeddedTweet--cta gmail-js-clickToOpenTarget gmail-tweet-InformationCircle-widgetParent" id="gmail-twitter-widget-1" lang="en" style="overflow:hidden;border:1px solid rgb(225,232,237);border-radius:5px;max-width:520px"><div class="gmail-EmbeddedTweet-ancestor gmail-EmbeddedTweet-ancestor--repliesRefresh" style="padding:20px 20px 0px"><blockquote class="gmail-Tweet gmail-Tweet--compact gmail-h-entry gmail-reply gmail-js-tweetIdInfo" cite="https://twitter.com/K3nt0W/status/901346751503769600" style="margin:0px;padding:0px;list-style:none;border:none;font-size:14px"><div class="gmail-Tweet-ancestorContainer gmail-Tweet-ancestorContainer--repliesRefresh" style="display:flex"><a class="gmail-TweetAuthor-avatar gmail-TweetAuthor-avatar--ancestor gmail-Identity-avatar gmail-u-linkBlend" href="https://twitter.com/K3nt0W" style="background-color:transparent;color:inherit;text-decoration:inherit;height:24px;margin-right:9px;margin-left:6px;outline:0px;font-weight:inherit"><img class="gmail-Avatar" alt="" src="https://pbs.twimg.com/profile_images/1056398456757964800/wM-5skdj_normal.jpg" style="border: 0px; max-width: 100%; max-height: 100%; border-radius: 50%;"></a><div class="gmail-Tweet-ancestorContents gmail-Tweet-ancestorContents--repliesRefresh" style="min-width:0px;padding-bottom:14px"><div class="gmail-Tweet-header" style="display:flex"><div class="gmail-TweetAuthor gmail-js-inViewportScribingTarget gmail-TweetAuthor--oneLine" style="display:flex;overflow:hidden;margin-top:0px"><a class="gmail-TweetAuthor-link gmail-Identity gmail-u-linkBlend" href="https://twitter.com/K3nt0W" style="background-color:transparent;color:inherit;text-decoration:inherit;display:flex;outline:0px;font-weight:inherit"><div class="gmail-TweetAuthor-nameScreenNameContainer" style="display:flex;line-height:1.2;min-width:0px"><span class="gmail-TweetAuthor-decoratedName" style="display:flex;min-width:0px;width:auto;max-width:100%"><span class="gmail-TweetAuthor-name gmail-Identity-name gmail-customisable-highlight" title="k3nt0" style="font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:4px">k3nt0</span></span><span class="gmail-TweetAuthor-screenName gmail-Identity-screenName" title="@K3nt0W" dir="ltr" style="color:rgb(105,120,130);font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">@K3nt0W</span></div></a></div><div class="gmail-Tweet-metadata" style="font-size:13px;color:rgb(105,120,130);white-space:nowrap;margin-right:5px"> · <a class="gmail-u-linkBlend gmail-u-url gmail-permalink gmail-customisable-highlight" href="https://twitter.com/K3nt0W/status/901346751503769600" style="background-color:transparent;color:inherit;text-decoration:inherit;outline:0px;font-weight:inherit">Aug 26, 2017</a></div><div class="gmail-Tweet-brand" style="margin-left:auto"><a href="https://twitter.com/K3nt0W/status/901346751503769600" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;outline:0px"><span class="gmail-FollowButton-bird"><div class="gmail-Icon gmail-Icon--twitter" title="View on Twitter" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em"></div></span></a></div></div><div class="gmail-Tweet-body gmail-e-entry-content" style="margin-top:0px;margin-left:0px"><p class="gmail-Tweet-text gmail-e-entry-title" lang="ja" dir="ltr" style="margin:0px;padding:0px;list-style:none;border:none;white-space:pre-wrap;direction:ltr">おいおいこれ全然ROI poolingじゃねーだろ.ただpooling sizeにresizeしてるだけや.任意サイズの入力に対応するpooling層(resize)はあかんやろ.なんか見落としてんのか?<a href="https://t.co/lTvcn4LYz5" rel="nofollow noopener" dir="ltr" class="gmail-link gmail-customisable" target="_blank" title="https://github.com/yhenon/keras-frcnn/blob/master/keras_frcnn/RoiPoolingConv.py#L99-L109" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;outline:0px"><span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">https://</span>github.com/yhenon/keras-f<span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">rcnn/blob/master/keras_frcnn/RoiPoolingConv.py#L99-L109 </span>…</a></p><div class="gmail-Tweet-card" style="margin-top:10.4px"><div class="gmail-PrerenderedCard gmail-is-constrainedByMaxWidth gmail-is-loaded" style="height:auto;width:419px;overflow:hidden"><div class="gmail-TwitterCardsGrid gmail-TwitterCard" style="background:transparent;color:inherit;overflow:hidden"><div class="gmail-TwitterCardsGrid-col--12 gmail-TwitterCardsGrid-col--spacerBottom gmail-CardContent" style="float:left;width:419px;clear:both;margin-bottom:0.32333em"><a class="gmail-js-openLink gmail-u-block gmail-TwitterCardsGrid-col--12 gmail-TwitterCard-container gmail-TwitterCard-container--clickable gmail-SummaryCard--small" href="https://t.co/lTvcn4LYz5" rel="noopener" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;border-radius:0.85714em;border-width:1px;border-style:solid;border-color:rgb(225,232,237);box-sizing:border-box;max-width:800px;overflow:hidden;outline:0px;float:left;width:419px;clear:both;display:block"><div class="gmail-SummaryCard-image gmail-TwitterCardsGrid-float--prev" style="float:left;background-color:rgb(225,232,237);border-style:solid;border-color:inherit;border-width:0px 1px 0px 0px;width:8.81667em"><div class="gmail-tcu-imageContainer gmail-tcu-imageAspect--1to1" style="width:123.422px;overflow:hidden"><div class="gmail-tcu-imageWrapper gmail-tcu-image-901346751503769600 gmail-js-cspForcedStyle" style="background-size:3em;background-position:50% 50%;background-repeat:no-repeat;background-image:url("//ton.twimg.com/tfw/assets/news_stroke_v1_78ce5b21fb24a7c7e528d22fc25bd9f9df7f24e2.svg")"><img class="gmail-u-block" src="https://pbs.twimg.com/card_img/1065137499524096000/61hGw-tO?format=jpg&name=144x144_2" alt="" style="border: 0px; width: 125.422px; height: 125.422px; opacity: 0; display: block;"></div></div></div><div class="gmail-SummaryCard-contentContainer gmail-TwitterCardsGrid-float--prev" style="float:left"><div class="gmail-SummaryCard-content gmail-TwitterCardsGrid-ltr" style="padding:0.75em;box-sizing:border-box"><h2 class="gmail-TwitterCard-title gmail-js-cardClick gmail-tcu-textEllipse--multiline" dir="ltr" style="margin:0px 0px 0.15em;padding:0px;list-style:none;border:none;font-size:1em;overflow:hidden;max-height:1.3em;white-space:nowrap;text-overflow:ellipsis">yhenon/keras-frcnn</h2><p class="gmail-tcu-resetMargin gmail-u-block gmail-TwitterCardsGrid-col--spacerTop gmail-tcu-textEllipse--multiline" dir="ltr" style="margin:0.32333em 0px 0px;padding:0px;list-style:none;border:none;overflow:hidden;max-height:3.9em">Contribute to yhenon/keras-frcnn development by creating an account on GitHub.</p><span class="gmail-u-block gmail-TwitterCardsGrid-col--spacerTop gmail-SummaryCard-destination" dir="ltr" style="margin-top:0.32333em;text-transform:lowercase;color:rgb(136,153,166);max-height:1.3em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block">github.com</span></div></div></a></div></div></div></div></div></div></div></blockquote></div><div class="gmail-EmbeddedTweet-tweetContainer"><div class="gmail-EmbeddedTweet-tweet" style="padding:0px 20px 10px"><blockquote class="gmail-Tweet gmail-h-entry gmail-js-tweetIdInfo gmail-subject expanded" cite="https://twitter.com/K3nt0W/status/901349276927668224" style="margin:0px;padding:0px;list-style:none;border:none"><div class="gmail-Tweet-header" style="display:flex"><a class="gmail-TweetAuthor-avatar gmail-Identity-avatar gmail-u-linkBlend" href="https://twitter.com/K3nt0W" style="background-color:transparent;color:inherit;text-decoration:inherit;height:36px;margin-right:9px;outline:0px;font-weight:inherit"><img class="gmail-Avatar" alt="" src="https://pbs.twimg.com/profile_images/1056398456757964800/wM-5skdj_normal.jpg" style="border: 0px; max-width: 100%; max-height: 100%; border-radius: 50%;"></a><div class="gmail-TweetAuthor gmail-js-inViewportScribingTarget" style="display:flex;overflow:hidden"><a class="gmail-TweetAuthor-link gmail-Identity gmail-u-linkBlend" href="https://twitter.com/K3nt0W" style="background-color:transparent;color:inherit;text-decoration:inherit;display:flex;outline:0px;font-weight:inherit"><div class="gmail-TweetAuthor-nameScreenNameContainer" style="display:flex;line-height:1.2;min-width:0px"><span class="gmail-TweetAuthor-decoratedName" style="display:flex;min-width:0px"><span class="gmail-TweetAuthor-name gmail-Identity-name gmail-customisable-highlight" title="k3nt0" style="font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:4px">k3nt0</span></span><span class="gmail-TweetAuthor-screenName gmail-Identity-screenName" title="@K3nt0W" dir="ltr" style="color:rgb(105,120,130);font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap">@K3nt0W</span></div></a></div></div><div class="gmail-Tweet-body gmail-e-entry-content" style="margin-top:14px"><div class="gmail-u-hiddenVisually gmail-js-inViewportScribingTarget" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px"></div><p class="gmail-Tweet-text gmail-e-entry-title" lang="ja" dir="ltr" style="margin:0px;padding:0px;list-style:none;border:none;white-space:pre-wrap;direction:ltr">tensorflow実装はroi poolingの代わりにresize使うんご〜,だってThis is much more efficient and has little impact on resultsンゴ. って書いてあった.<br><br>まじかよ.</p><div class="gmail-TweetInfo" style="display:flex;margin-top:3.2px;font-size:14px"><div class="gmail-TweetInfo-like"><a class="gmail-TweetInfo-heart" title="Like" href="https://twitter.com/intent/like?tweet_id=901349276927668224" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:flex;outline:0px"><div class="gmail-Icon gmail-Icon--heart gmail-TweetInfo-heartIcon" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em"></div><span class="gmail-TweetInfo-heartStat" style="margin-left:3px">7</span></a></div><div class="gmail-TweetInfo-timeGeo" style="margin-left:12px;color:rgb(105,120,130)"><a class="gmail-u-linkBlend gmail-u-url gmail-customisable-highlight gmail-long-permalink" href="https://twitter.com/K3nt0W/status/901349276927668224" style="background-color:transparent;color:inherit;text-decoration:inherit;outline:0px;font-weight:inherit">4:43 PM - Aug 26, 2017</a></div><div class="gmail-tweet-InformationCircle--bottomWithCTA gmail-tweet-InformationCircle" style="right: 20px;"><a href="https://support.twitter.com/articles/20175256" class="gmail-Icon gmail-Icon--informationCircleWhite gmail-js-inViewportScribingTarget" title="Twitter Ads info and privacy" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:inline-block;height:18px;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:18px;outline:0px"><span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">Twitter Ads info and privacy</span></a></div></div></div></blockquote></div><a class="gmail-CallToAction" title="View k3nt0's profile on Twitter" href="https://twitter.com/K3nt0W" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:flex;border-color:rgb(225,232,237);border-style:solid;border-radius:0px 0px 4px 4px;border-width:1px 0px 0px;padding:9px 20px;font-size:14px;outline:0px"><div class="gmail-CallToAction-icon gmail-Icon gmail-Icon--profileCTA" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em"></div><span class="gmail-CallToAction-text" style="margin-left:4px">See k3nt0's other Tweets</span><div class="gmail-Icon gmail-Icon--chevronRightCTA gmail-CallToAction-chevron" style="display:inline-block;height:1.25em;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:1.25em;margin-left:auto"></div></a></div><div class="gmail-tweet-InformationCircle" style="right: 0px;"><a href="https://support.twitter.com/articles/20175256" class="gmail-Icon gmail-Icon--informationCircleWhite gmail-js-inViewportScribingTarget" title="Twitter Ads info and privacy" style="background-color:transparent;color:rgb(43,123,185);text-decoration-line:none;display:inline-block;height:18px;background-repeat:no-repeat;background-size:contain;vertical-align:text-bottom;width:18px;outline:0px"><span class="gmail-u-hiddenVisually" style="overflow:hidden;width:1px;height:1px;padding:0px;border:0px">Twitter Ads info and privacy</span></a></div></div><div class="gmail-resize-sensor" style="overflow:hidden"><div class="gmail-resize-sensor-expand" style="overflow:hidden"><div style="width:510px;height:512px"></div></div><div class="gmail-resize-sensor-shrink" style="overflow:hidden"><div style="width:1000px;height:1004.03px"></div></div></div></div></span><h1 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.8em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-実装例" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#%E5%AE%9F%E8%A3%85%E4%BE%8B" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>実装例</h1><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-pytorch実装" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#pytorch%E5%AE%9F%E8%A3%85" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>PyTorch実装</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://github.com/felixgwu/mask_rcnn_pytorch" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/felixgwu/mask_rcnn_pytorch</a><br style="box-sizing:inherit"><a href="https://github.com/felixgwu/mask_rcnn_pytorch/blob/dbe7304f87afd2edd51a29630c485f098bb64db0/models/modules/roi_align/src/cuda/roi_align_kernel.cu" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">roi_align_kernel.cu</a> の実装を見る限り、「各ビンの中心座標の値をbilinear interpolationし、その値をそのまま利用する」を利用している。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-tensorflow実装" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#tensorflow%E5%AE%9F%E8%A3%85" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>TensorFlow実装</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://github.com/CharlesShang/FastMaskRCNN" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/CharlesShang/FastMaskRCNN</a><br style="box-sizing:inherit"><a href="https://github.com/CharlesShang/FastMaskRCNN/issues/116" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">こちらのIssue</a> にある通り、<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">tf.image.crop_and_resize</code> を利用してリサイズを行っている。<code style="box-sizing:inherit;background-color:rgb(238,238,238);padding:0.1em 0.4em;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,Courier,monospace">tf.image.crop_and_resize</code> は補間方法としてbilinear interpolationを採用しているので、上記の手法と同じ結果になりそう。</p><h2 style="box-sizing:inherit;margin:2.2em 0px 2.4rem;padding:0px 0px 0.1em;font-size:1.6em;line-height:1.5;font-feature-settings:"palt";border-bottom:1px solid rgb(221,221,221)"><span id="gmail-caffe実装" class="gmail-fragment" style="box-sizing:inherit;display:block"></span><a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#caffe%E5%AE%9F%E8%A3%85" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)"></a>Caffe実装</h2><p style="box-sizing:inherit;margin:0px;padding:0px;line-height:1.9"><a href="https://github.com/jasjeetIM/Mask-RCNN" class="gmail-autolink" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">https://github.com/jasjeetIM/Mask-RCNN</a><br style="box-sizing:inherit"><a href="https://github.com/jasjeetIM/Mask-RCNN/blob/60290fb79a18d345040bc5de7cbcb7cd52d80be8/external/caffe/src/caffe/layers/roi_align_layer.cpp" rel="nofollow noopener" target="_blank" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">roi_align_layer.cpp</a> を見る限り、各ビンの中心座標を中心とした1ピクセル四方のグリッド上の4点をサンプルしている。本稿の例よりもこちらの実装のほうが適切かもしれない。</p><div class="gmail-footnotes" style="box-sizing:inherit;font-size:0.9em"><hr style="box-sizing:inherit;margin:3em 0px;padding:0px;border:0px;height:2px;background-color:rgb(221,221,221)"><ol style="box-sizing:inherit;margin:1.5em 0px;padding:0px 0px 0px 1.5em;line-height:1.9"><li id="gmail-fn1" style="box-sizing:inherit;margin:0px;padding:0px"><p style="box-sizing:inherit;margin:1em 0px;padding:0px;line-height:1.9">R. Girshick, "Fast R-CNN," in Proc. of ICCV, 2015. <a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fnref1" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">↩</a></p></li><li id="gmail-fn2" style="box-sizing:inherit;margin:0px;padding:0px"><p style="box-sizing:inherit;margin:1em 0px;padding:0px;line-height:1.9">S. Ren, K. He, R. Girshick, J. Sun, "Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks," in Proc. of NIPS, 2015. <a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fnref2" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">↩</a></p></li><li id="gmail-fn3" style="box-sizing:inherit;margin:0px;padding:0px"><p style="box-sizing:inherit;margin:1em 0px;padding:0px;line-height:1.9">Mask R-CNN, "K. He, G. Gkioxari, P. Dollar, and R. Girshick, in Proc. of ICCV, 2017. <a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fnref3" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">↩</a></p></li><li id="gmail-fn4" style="box-sizing:inherit;margin:0px;padding:0px"><p style="box-sizing:inherit;margin:1em 0px;padding:0px;line-height:1.9">R. Girshick, J. Donahue, T. Darrell, and J. Malik, "Rich Feature Hierarchies for Accurate Object Detection and Semantic Segmentation," in Proc. of CVPR, 2014. <a href="https://qiita.com/yu4u/items/5cbe9db166a5d72f9eb8#fnref4" style="box-sizing:inherit;text-decoration-line:none;color:rgb(98,0,172)">↩</a></p></li></ol></div></div><div class="gmail-it-Footer" style="box-sizing:inherit;display:flex;margin-top:64px;margin-bottom:24px;color:rgb(51,51,51);font-family:-apple-system,"Segoe UI","Helvetica Neue","Hiragino Kaku Gothic ProN",メイリオ,meiryo,sans-serif;font-size:14px"><div class="gmail-it-Footer_actions" style="box-sizing:inherit;display:flex"><div class="gmail-it-Footer_editRequest" style="box-sizing:inherit;margin-right:8px;margin-bottom:16px;padding:0px 16px;color:rgb(255,255,255);background-color:rgb(255,141,0);border-radius:4px;display:flex;height:32px"><a href="https://qiita.com/drafts/5cbe9db166a5d72f9eb8/edit" class="gmail-u-link-no-underline" style="box-sizing:inherit;text-decoration-line:none;color:inherit"><span class="gmail-fa gmail-fa-fw gmail-fa-send" style="box-sizing:inherit;display:inline-block;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;line-height:1;font-family:FontAwesome;font-size:inherit;width:1.28571em;text-align:center;margin-right:4px"></span><span style="box-sizing:inherit">編集リクエスト</span></a></div></div></div></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-73778018702158949522018-11-24T10:48:00.000+09:002018-11-24T10:49:51.996+09:00Intersection over Union (IoU) for object detection<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><a href="https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/">https://www.pyimagesearch.com/2016/11/07/intersection-over-union-iou-for-object-detection/</a><br></div><div dir="ltr"><br></div><div dir="ltr"><a href="https://gist.github.com/vierja/38f93bb8c463dce5500c0adf8648d371">https://gist.github.com/vierja/38f93bb8c463dce5500c0adf8648d371</a><br></div><div dir="ltr"><br></div><div dir="ltr"><a href="https://gist.github.com/meyerjo/dd3533edc97c81258898f60d8978eddc">https://gist.github.com/meyerjo/dd3533edc97c81258898f60d8978eddc</a><br></div><div dir="ltr"><br></div><div dir="ltr"><h2 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:24px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Intersection over Union for object detection</h2><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In the remainder of this blog post I'll explain <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">what</em> the Intersection over Union evaluation metric is and <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">why</em> we use it.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">I'll also provide a Python implementation of Intersection over Union that you can use when evaluating your own custom object detectors.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Finally, we'll look at some <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">actual results</em> of applying the Intersection over Union evaluation metric to a set of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">ground-truth</em> and <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">predicted</em> bounding boxes.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">What is Intersection over Union?</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Intersection over Union is an evaluation metric used to measure the accuracy of an object detector on a particular dataset. We often see this evaluation metric used in object detection challenges such as the popular <a href="http://host.robots.ox.ac.uk/pascal/VOC/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">PASCAL VOC challenge</a>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">You'll typically find Intersection over Union used to evaluate the performance of <a href="https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">HOG + Linear SVM object detectors</a> and Convolutional Neural Network detectors (R-CNN, Faster R-CNN, YOLO, etc.); however, keep in mind that the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">actual algorithm used to generate the predictions <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">doesn't matter.</strong></em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Intersection over Union is simply an <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">evaluation metric</em>. Any algorithm that provides predicted bounding boxes as output can be evaluated using IoU.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">More formally, in order to apply Intersection over Union to evaluate an (arbitrary) object detector we need:</p><ol style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">The <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">ground-truth bounding boxes</em> (i.e., the hand labeled bounding boxes from the testing set that specify <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">where</em> in the image our object is).</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">The <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">predicted bounding boxes</em> from our model.</li></ol><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As long as we have these two sets of bounding boxes we can apply Intersection over Union.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Below I have included a visual example of a ground-truth bounding box versus a predicted bounding box:</p><div id="gmail-attachment_4671" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:610px;width:610px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-size-full gmail-wp-image-4671" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_stop_sign.jpg" alt="Figure 1: An example of detecting a stop sign in an image. The predicted bounding box is drawn in red while the ground-truth bounding box is drawn in green. Our goal is to compute the Intersection of Union between these bounding box." width="600" height="450" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 1</strong>: An example of detecting a stop sign in an image. The predicted bounding box is drawn in red while the ground-truth bounding box is drawn in green. Our goal is to compute the Intersection of Union between these bounding box.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In the figure above we can see that our object detector has detected the presence of a stop sign in an image.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">predicted</em> bounding box is drawn in <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">red</em> while the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">ground-truth</em> (i.e., hand labeled) bounding box is drawn in green.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Computing Intersection over Union can therefore be determined via:</p><div id="gmail-attachment_4672" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:610px;width:610px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-size-full gmail-wp-image-4672" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_equation.png" alt="Figure 2: Computing the Intersection of Union is as simple as dividing the area of overlap between the bounding boxes by the area of union (thank you to the excellent Pittsburg HW4 assignment for the inspiration for this figure)." width="600" height="468" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 2:</strong> Computing the Intersection of Union is as simple as dividing the area of overlap between the bounding boxes by the area of union (thank you to the excellent <a href="https://people.cs.pitt.edu/~kovashka/cs1699/hw4.html" target="_blank" rel="noopener" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none;margin:0px">Pittsburg HW4 assignment</a> for the inspiration for this figure).</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Examining this equation you can see that Intersection over Union is simply a ratio.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In the numerator we compute the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">area of overlap</strong></em> between the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">predicted</em> bounding box and the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">ground-truth</em> bounding box.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The denominator is the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">area of union</strong></em>, or more simply, the area encompassed by <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">both</em> the predicted bounding box and the ground-truth bounding box.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Dividing the area of overlap by the area of union yields our final score — <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">the Intersection over Union.</em></p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Where are you getting the ground-truth examples from?</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Before we get too far, you might be wondering where the ground-truth examples come from. I've mentioned before that these images are "hand labeled", but what exactly does that mean?</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">You see, when training your own object detector (such as the <a href="https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">HOG + Linear SVM method</a>), you need a dataset. This dataset should be broken into (at least) two groups:</p><ol style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">A <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">training set</em> used for training your object detector.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">A <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">testing set</em> for evaluating your object detector.</li></ol><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">You may also have a <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">validation set</em> used to <a href="https://www.pyimagesearch.com/2016/08/15/how-to-tune-hyperparameters-with-python-and-scikit-learn/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">tune the hyperparameters of your model</a>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Both the training and testing set will consist of:</p><ol style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">The actual images themselves.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">The <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">bounding boxes</em> associated with the object(s) in the image. The bounding boxes are simply the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">(x, y)</em>-coordinates of the object in the image.</li></ol><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The bounding boxes for the training and testing sets are <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">hand labeled</em> and hence why we call them the "ground-truth".</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Your goal is to take the training images + bounding boxes, construct an object detector, and then evaluate its performance on the testing set.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">An Intersection over Union score <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">> 0.5</em> is normally considered a "good" prediction. </strong></p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Why do we use Intersection over Union?</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">If you have performed any previous machine learning in your career, specifically classification, you'll likely be used to <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">predicting class labels</em> where your model outputs a single label that is either <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">correct</em> or <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">incorrect.</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">This type of binary classification makes computing accuracy straightforward; however, for object detection it's not so simple.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In all reality, it's <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">extremely unlikely</em> that the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">(x, y)</em>-coordinates of our predicted bounding box are going to <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">exactly match</em></strong> the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">(x, y)</em>-coordinates of the ground-truth bounding box.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Due to varying parameters of our model (image pyramid scale, sliding window size, feature extraction method, etc.), a complete and total match between predicted and ground-truth bounding boxes is simply unrealistic.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Because of this, we need to define an evaluation metric that <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">rewards</em> predicted bounding boxes for heavily overlapping with the ground-truth:</p><div id="gmail-attachment_4673" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:610px;width:610px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-size-full gmail-wp-image-4673" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_examples.png" alt="Figure 3: An example of computing Intersection over Unions for various bounding boxes." width="600" height="248" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 3:</strong> An example of computing Intersection over Unions for various bounding boxes.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In the above figure I have included examples of good and bad Intersection over Union scores.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As you can see, predicted bounding boxes that heavily overlap with the ground-truth bounding boxes have higher scores than those with less overlap. This makes Intersection over Union an excellent metric for evaluating custom object detectors.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We aren't concerned with an <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">exact</em> match of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">(x, y)</em>-coordinates, but we do want to ensure that our predicted bounding boxes match as closely as possible — Intersection over Union is able to take this into account.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Implementing Intersection over Union in Python</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Now that we understand what Intersection over Union is and why we use it to evaluate object detection models, let's go ahead and implement it in Python.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Before we get started writing any code though, I want to provide the five example images we will be working with:</p><div id="gmail-attachment_4674" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:460px;width:460px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4674" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_car_dataset.jpg" alt="Figure 4: In this example, we'll be detecting the presence of cars in images." width="450" height="460" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 4</strong>: In this example, we'll be detecting the presence of cars in images.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">These images are part of the <a href="https://www.vision.caltech.edu/Image_Datasets/Caltech101/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">CALTECH-101 dataset</a> used for both <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">image classification</em>and <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">object detection.</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Inside the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><a href="https://www.pyimagesearch.com/pyimagesearch-gurus/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">PyImageSearch Gurus course</a></strong></em> I demonstrate how to train a custom object detector to detect the presence of cars in images like the ones above using the HOG + Linear SVM framework.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">I have provided a visualization of the ground-truth bounding boxes (green) along with the predicted bounding boxes (red) from the custom object detector below:</p><div id="gmail-attachment_4675" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:460px;width:460px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4675" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_car_bbs.jpg" alt="Figure 5: Our goal is to evaluate the performs of our object detector by using Intersection of Union. Specifically, we want to measure the accuracy of the predicted bounding box (red) against the ground-truth (green)." width="450" height="460" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 5:</strong> Our goal is to evaluate the performance of our object detector by using Intersection of Union. Specifically, we want to measure the accuracy of the predicted bounding box (red) against the ground-truth (green).</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Given these bounding boxes, our task is to define the Intersection over Union metric that can be used to evaluate how "good (or bad) our predictions are.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">With that said, open up a new file, name it <span id="gmail-crayon-5bf88e0178e56199997761" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">intersection_over_union</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">py</span></span></span> , and let's get coding:</p><div id="gmail-crayon-5bf88e0178e63740226773" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-mac gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">Intersection over Union (IoU) for object detection</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:124px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">1</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">2</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">3</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">4</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">5</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">6</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">7</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:602px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e63740226773-1" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># import the necessary packages</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e63740226773-2" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">from</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">collections</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">namedtuple</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e63740226773-3" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">numpy </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">as</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">np</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e63740226773-4" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e63740226773-5" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e63740226773-6" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># define the `Detection` object</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e63740226773-7" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">Detection</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">namedtuple</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"Detection"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"image_path"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"gt"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"pred"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We start off by importing our required Python packages. We then define a <span id="gmail-crayon-5bf88e0178e69419525198" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">Detection</span></span></span> object that will store three attributes:</p><ul style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf88e0178e6d266129493" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image_path</span></span></span> : The path to our input image that resides on disk.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf88e0178e72285243424" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">gt</span></span></span> : The ground-truth bounding box.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf88e0178e76794985699" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">pred</span></span></span> : The predicted bounding box from our model.</li></ul><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As we'll see later in this example, I've already obtained the predicted bounding boxes from our five respective images and hardcoded them into this script to keep the example short and concise.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">For a complete review of the HOG + Linear SVM object detection framework, <a href="https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">please refer to this blog post</a>. And if you're interested in learning more about training your own custom object detectors from scratch, be sure to check out the <a href="https://www.pyimagesearch.com/pyimagesearch-gurus/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">PyImageSearch Gurus course</a>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Let's go ahead and define the <span id="gmail-crayon-5bf88e0178e7b521532738" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">bb_intersection_over_union</span></span></span> function, which as the name suggests, is responsible for computing the Intersection over Union between two bounding boxes:</p><div id="gmail-crayon-5bf88e0178e7f566148590" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-mac gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">Intersection over Union (IoU) for object detection</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:349px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">9</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">10</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">11</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">12</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">13</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">14</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">15</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">16</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">17</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">18</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">19</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">20</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">21</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">22</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">23</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">24</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">25</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">26</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">27</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">28</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">29</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">30</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-9" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">def</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">bb_intersection_over_union</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-10" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># determine the (x, y)-coordinates of the intersection rectangle</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-11" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">xA</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">max</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-12" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">yA</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">max</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-13" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">xB</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">min</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-14" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">yB</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">min</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">3</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">3</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-15" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-16" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># compute the area of intersection rectangle</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-17" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">interArea</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">max</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">xB</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">xA</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">max</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">yB</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">yA</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-18" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-19" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># compute the area of both the prediction and ground-truth</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-20" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># rectangles</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-21" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxAArea</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">3</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-22" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxBArea</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">3</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-23" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-24" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># compute the intersection over union by taking the intersection</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-25" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># area and dividing it by the sum of prediction + ground-truth</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-26" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># areas - the interesection area</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-27" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">iou</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">interArea</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">/</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">float</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxAArea</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">+</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxBArea</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">interArea</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-28" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e7f566148590-29" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># return the intersection over union value</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e7f566148590-30" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">return</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">iou</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">This method requires two parameters: <span id="gmail-crayon-5bf88e0178e85082814327" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxA</span></span></span> and <span id="gmail-crayon-5bf88e0178e8a881745035" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">boxB</span></span></span> , which are presumed to be our ground-truth and predicted bounding boxes (the actual <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">order</em> in which these parameters are supplied to <span id="gmail-crayon-5bf88e0178e8f573103476" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">bb_intersection_over_union</span></span></span> doesn't matter).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 11-14</strong> determine the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">(x, y)</em>-coordinates of the intersection rectangle which we then use to compute the area of the intersection (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 17</strong>).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The <span id="gmail-crayon-5bf88e0178e93207295314" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">interArea</span></span></span> variable now represents the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">numerator</em> in the Intersection over Union calculation.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">To compute the denominator we first need to derive the area of both the predicted bounding box and the ground-truth bounding box (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 21 and 22</strong>).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The Intersection over Union can then be computed on <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 27</strong> by dividing the intersection area by the union area of the two bounding boxes, taking care to subtract out the intersection area from the denominator (otherwise the intersection area would be doubly counted).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Finally, the Intersection over Union score is returned to the calling function on <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 30</strong>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Now that our Intersection over Union method is finished, we need to define the ground-truth and predicted bounding box coordinates for our five example images:</p><div id="gmail-crayon-5bf88e0178e98693479564" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-mac gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">Intersection over Union (IoU) for object detection</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:124px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">32</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">33</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">34</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">35</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">36</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">37</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">38</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e98693479564-32" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># define the list of example detections</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e98693479564-33" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">examples</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e98693479564-34" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">Detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"image_0002.jpg"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">39</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">63</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">203</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">112</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">54</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">66</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">198</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">114</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e98693479564-35" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">Detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"image_0016.jpg"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">49</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">75</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">203</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">125</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">42</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">78</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">186</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">126</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e98693479564-36" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">Detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"image_0075.jpg"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">31</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">69</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">201</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">125</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">18</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">63</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">235</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">135</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178e98693479564-37" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">Detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"image_0090.jpg"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">50</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">72</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">197</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">121</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">54</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">72</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">198</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">120</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178e98693479564-38" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">Detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"image_0120.jpg"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">35</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">51</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">196</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">110</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">36</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">60</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">180</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">108</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As I mentioned above, in order to keep this example short(er) and concise, I have <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">manually obtained</em> the predicted bounding box coordinates from my HOG + Linear SVM detector. These predicted bounding boxes (And corresponding ground-truth bounding boxes) are then <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">hardcoded</em> into this script.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">For more information on how I trained this exact object detector, <a href="https://www.pyimagesearch.com/pyimagesearch-gurus/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">please refer to the PyImageSearch Gurus course</a>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We are now ready to evaluate our predictions:</p><div id="gmail-crayon-5bf88e0178ea0980352290" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-mac gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">Intersection over Union (IoU) for object detection</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:334px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">40</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">41</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">42</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">43</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">44</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">45</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">46</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">47</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">48</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">49</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">50</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">51</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">52</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">53</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">54</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">55</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">56</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">57</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">58</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">59</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">60</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-40" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># loop over the example detections</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-41" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">for</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">detection </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">in</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">examples</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-42" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># load the image</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-43" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">imread</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image_path</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-44" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-45" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># draw the ground-truth bounding box along with the predicted</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-46" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># bounding box</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-47" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">rectangle</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">tuple</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">gt</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-48" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">tuple</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">gt</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-49" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">rectangle</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">tuple</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">pred</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-50" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">tuple</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">pred</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-51" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-52" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># compute the intersection over union and display it</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-53" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">iou</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">bb_intersection_over_union</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">gt</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">pred</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-54" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">putText</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"IoU: {:.4f}"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">iou</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">10</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">30</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-55" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">FONT_HERSHEY_SIMPLEX</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0.6</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">255</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-56" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"{}: {:.4f}"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">detection</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image_path</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">iou</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-57" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-58" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># show the output image</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178ea0980352290-59" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">imshow</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"Image"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf88e0178ea0980352290-60" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">waitKey</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">On <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 41</strong> we start looping over each of our <span id="gmail-crayon-5bf88e0178ea9539065519" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">examples</span></span></span> (which are <span id="gmail-crayon-5bf88e0178ead963693658" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">Detection</span></span></span> objects).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">For each of them, we load the respective <span id="gmail-crayon-5bf88e0178eb1705572512" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span></span></span> from disk on <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 43</strong> and then draw the ground-truth bounding box in green (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 47 and 48</strong>) followed by the predicted bounding box in red (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 49 and 50</strong>).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The actual Intersection over Union metric is computed on <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 53</strong> by passing in the ground-truth and predicted bounding box.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We then write the Intersection over Union value on the <span id="gmail-crayon-5bf88e0178eb6222104025" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span></span></span> itself followed by our console as well.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Finally, the output image is displayed to our screen on <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 59 and 60</strong>.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Comparing predicted detections to the ground-truth with Intersection over Union</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">To see the Intersection over Union metric in action, make sure you have downloaded the source code + example images to this blog post by using the <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">"Downloads"</em></strong> section found at the bottom of this tutorial.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">After unzipping the archive, execute the following command:</p><div id="gmail-crayon-5bf88e0178eba379660059" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-mac gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">Intersection over Union (IoU) for object detection</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Shell</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:34px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">1</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:602px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf88e0178eba379660059-1" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">$</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">python </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">intersection_over_union</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">.py</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Our first example image has an Intersection over Union score of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">0.7980</em>, indicating that there is significant overlap between the two bounding boxes:</p><div id="gmail-attachment_4676" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:410px;width:410px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4676" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_result_01.jpg" alt="Figure 6: Computing the Intersection of Union using Python." width="400" height="328" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 6:</strong> Computing the Intersection of Union using Python.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The same is true for the following image which has an Intersection over Union score of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">0.7899</em>:</p><div id="gmail-attachment_4677" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:410px;width:410px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4677" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_result_02.jpg" alt="Figure 7: A slightly better Intersection over Union score." width="400" height="328" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 7:</strong> A slightly better Intersection over Union score.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Notice how the ground-truth bounding box (green) is wider than the predicted bounding box (red). This is because our object detector is defined using the HOG + Linear SVM framework which requires us to specify a fixed size sliding window (not to mention, an image pyramid scale and the HOG parameters themselves).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Ground-truth bounding boxes will naturally have a slightly different aspect ratio than the predicted bounding boxes, but that's okay provided that the Intersection over Union score is <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">> 0.5</em> — as we can see, this still a great prediction.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The next example demonstrates a slightly "less good" prediction where our predicted bounding box is much less "tight" than the ground-truth bounding box:</p><div id="gmail-attachment_4678" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:410px;width:410px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4678" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_result_03.jpg" alt="Figure 8: Deriving the Intersection of Union evaluation metric for object detection." width="400" height="328" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 8:</strong> Deriving the Intersection of Union evaluation metric for object detection.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The reason for this is because our HOG + Linear SVM detector likely couldn't "find" the car in the lower layers of the image pyramid and instead fired near the top of the pyramid where the image is much smaller.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The following example is an <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">extremely good</em> detection with an Intersection over Union score of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">0.9472</em>:</p><div id="gmail-attachment_4679" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:410px;width:410px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4679" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_result_04.jpg" alt="Figure 9: Measuring object detection performance using Intersection over Union." width="400" height="328" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 9:</strong> Measuring object detection performance using Intersection over Union.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Notice how the predicted bounding box nearly perfectly overlaps with the ground-truth bounding box.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Here is one final example of computing Intersection over Union:</p><div id="gmail-attachment_4680" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:410px;width:410px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4680" src="https://www.pyimagesearch.com/wp-content/uploads/2016/09/iou_result_05.jpg" alt="Figure 10: Intersection over Union for evaluating object detection algorithms." width="400" height="328" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 10:</strong> Intersection over Union for evaluating object detection algorithms.</p></div><h2 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:24px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Want to train your own custom object detectors?</h2><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">If you enjoyed this tutorial and want to learn more about training your own custom object detectors, you'll <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">definitely</em> want to take a look at the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><a href="https://www.pyimagesearch.com/pyimagesearch-gurus/?src=post-knn-classifier" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">PyImageSearch Gurus course</a></strong></em> — the most <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">complete, comprehensive </em>computer vision course online today.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Inside the course, you'll find over <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">168 lessons</strong> covering <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">2,161+ pages of content</strong> on <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Object Detection, Image Classification, Convolutional Neural Networks, <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">and much more.</strong></em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">To learn more about the PyImageSearch Gurus course (and grab your <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">FREE sample lessons + course syllabus</strong></em>), just click the button below:</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"></p><center style="margin:0px;padding:0px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><a href="https://www.pyimagesearch.com/pyimagesearch-gurus/?src=post-knn-classifier" target="_blank" rel="noopener" style="margin:0px;padding:10px;border:0px;outline:0px;font-size:16px;vertical-align:baseline;background:rgb(223,75,75);color:rgb(255,255,255);text-decoration-line:none;font-family:Helvetica,Arial,sans-serif;font-weight:bold;line-height:20px;display:inline-block;border-radius:5px">Click here to learn more about PyImageSearch Gurus!</a></center><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"></p><h2 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:24px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Summary</h2><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In this blog post I discussed the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Intersection over Union</em> metric used to evaluate object detectors. This metric can be used to assess <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">any</em> object detector provided that (1) the model produces predicted <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">(x, y)</em>-coordinates [i.e., the bounding boxes] for the object(s) in the image and (2) you have the ground-truth bounding boxes for your dataset.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Typically, you'll see this metric used for evaluating HOG + Linear SVM and CNN-based object detectors.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">To learn more about training your own custom object detectors, please refer to this blog post on the <a href="https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">HOG + Linear SVM framework</a> along with the <a href="https://www.pyimagesearch.com/pyimagesearch-gurus/" target="_blank" rel="noopener" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none"><em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">PyImageSearch Gurus course</strong></em></a> where I demonstrate how to implement custom object detectors from scratch.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Finally, before you go, be sure to enter your email address in the form below to be notified when future PyImageSearch blog posts are published — you won't want to miss them!</strong></em></p></div></div></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-35415455972559933292018-11-24T10:26:00.000+09:002018-11-24T10:27:53.865+09:00Hyperparameter optimization<div dir="ltr"><div dir="ltr"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization">https://en.wikipedia.org/wiki/Hyperparameter_optimization</a><br></div><div dir="ltr"><br></div><div dir="ltr"><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">In <a href="https://en.wikipedia.org/wiki/Machine_learning" title="Machine learning" style="text-decoration-line:none;color:rgb(11,0,128);background:none">machine learning</a>, <b>hyperparameter optimization</b> or tuning is the problem of choosing a set of optimal <a href="https://en.wikipedia.org/wiki/Hyperparameter_(machine_learning)" title="Hyperparameter (machine learning)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">hyperparameters</a> for a learning algorithm.</p><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">The same kind of machine learning model can require different constraints, weights or learning rates to generalize different data patterns. These measures are called hyperparameters, and have to be tuned so that the model can optimally solve the machine learning problem. Hyperparameter optimization finds a tuple of hyperparameters that yields an optimal model which minimizes a predefined <a href="https://en.wikipedia.org/wiki/Loss_function" title="Loss function" style="text-decoration-line:none;color:rgb(11,0,128);background:none">loss function</a> on given independent data.<sup id="gmail-cite_ref-abs1502.02127_1-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1502.02127-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[1]</a></sup> The objective function takes a tuple of hyperparameters and returns the associated loss.<sup id="gmail-cite_ref-abs1502.02127_1-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1502.02127-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[1]</a></sup> <a href="https://en.wikipedia.org/wiki/Cross-validation_(statistics)" title="Cross-validation (statistics)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Cross-validation</a> is often used to estimate this generalization performance.<sup id="gmail-cite_ref-bergstra_2-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-bergstra-2" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[2]</a></sup></p><div id="gmail-toc" class="gmail-toc" style="border:1px solid rgb(162,169,177);background-color:rgb(248,249,250);padding:7px;font-size:13.3px;display:table;zoom:1;font-family:sans-serif"><input type="checkbox" id="gmail-toctogglecheckbox" class="gmail-toctogglecheckbox" style="direction:ltr;opacity:0;display:none"><div class="gmail-toctitle" lang="en" dir="ltr" style="direction:ltr;text-align:center"><h2 style="color:rgb(0,0,0);background:none;margin:1em 0px 0.25em;overflow:hidden;padding:0px;border:0px;font-size:13.3px;display:inline;line-height:1.3">Contents</h2><span class="gmail-toctogglespan" style="font-size:12.502px"><label class="gmail-toctogglelabel" for="toctogglecheckbox" style="color:rgb(6,69,173)"></label></span></div><ul style="list-style-type:none;margin:0.3em 0px;padding:0px"><li class="gmail-toclevel-1 gmail-tocsection-1" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Approaches" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Approaches</span></a><ul style="list-style-type:none;margin:0px 0px 0px 2em;padding:0px"><li class="gmail-toclevel-2 gmail-tocsection-2" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Grid_search" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1.1</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Grid search</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-3" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Random_search" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1.2</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Random search</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-4" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Bayesian_optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1.3</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Bayesian optimization</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-5" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Gradient-based_optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1.4</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Gradient-based optimization</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-6" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Evolutionary_optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1.5</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Evolutionary optimization</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-7" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Others" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">1.6</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Others</span></a></li></ul></li><li class="gmail-toclevel-1 gmail-tocsection-8" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Open-source_software" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Open-source software</span></a><ul style="list-style-type:none;margin:0px 0px 0px 2em;padding:0px"><li class="gmail-toclevel-2 gmail-tocsection-9" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Grid_search_2" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2.1</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Grid search</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-10" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Random_search_2" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2.2</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Random search</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-11" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Bayesian" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2.3</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Bayesian</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-12" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Gradient_based" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2.4</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Gradient based</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-13" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Evolutionary" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2.5</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Evolutionary</span></a></li><li class="gmail-toclevel-2 gmail-tocsection-14" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Other" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">2.6</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Other</span></a></li></ul></li><li class="gmail-toclevel-1 gmail-tocsection-15" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#Commercial_services" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">3</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">Commercial services</span></a></li><li class="gmail-toclevel-1 gmail-tocsection-16" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#See_also" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">4</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">See also</span></a></li><li class="gmail-toclevel-1 gmail-tocsection-17" style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#References" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-tocnumber" style="display:table-cell;text-decoration:inherit;padding-left:0px;padding-right:0.5em;color:rgb(34,34,34)">5</span><span class="gmail-toctext" style="display:table-cell;text-decoration:inherit">References</span></a></li></ul></div><h2 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-weight:normal;margin:1em 0px 0.25em;overflow:hidden;padding:0px;border-bottom:1px solid rgb(162,169,177);font-family:"Linux Libertine",Georgia,Times,serif;line-height:1.3"><span class="gmail-mw-headline" id="gmail-Approaches">Approaches</span><span class="gmail-mw-editsection" style="font-size:small;margin-left:1em;vertical-align:baseline;line-height:1em;font-family:sans-serif;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=1" title="Edit section: Approaches" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h2><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Grid_search">Grid search</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=2" title="Edit section: Grid search" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">The traditional way of performing hyperparameter optimization has been <i>grid search</i>, or a <i>parameter sweep</i>, which is simply an <a href="https://en.wikipedia.org/wiki/Brute-force_search" title="Brute-force search" style="text-decoration-line:none;color:rgb(11,0,128);background:none">exhaustive searching</a> through a manually specified subset of the hyperparameter space of a learning algorithm. A grid search algorithm must be guided by some performance metric, typically measured by <a href="https://en.wikipedia.org/wiki/Cross-validation_(statistics)" title="Cross-validation (statistics)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">cross-validation</a> on the training set<sup id="gmail-cite_ref-3" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-3" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[3]</a></sup> or evaluation on a held-out validation set.<sup id="gmail-cite_ref-4" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-4" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[4]</a></sup></p><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Since the parameter space of a machine learner may include real-valued or unbounded value spaces for certain parameters, manually set bounds and discretization may be necessary before applying grid search.</p><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">For example, a typical soft-margin <a href="https://en.wikipedia.org/wiki/Support_vector_machine" title="Support vector machine" style="text-decoration-line:none;color:rgb(11,0,128);background:none">SVM</a> <a href="https://en.wikipedia.org/wiki/Statistical_classification" title="Statistical classification" style="text-decoration-line:none;color:rgb(11,0,128);background:none">classifier</a> equipped with an <a href="https://en.wikipedia.org/wiki/Radial_basis_function_kernel" title="Radial basis function kernel" style="text-decoration-line:none;color:rgb(11,0,128);background:none">RBF kernel</a> has at least two hyperparameters that need to be tuned for good performance on unseen data: a regularization constant <i>C</i> and a kernel hyperparameter γ. Both parameters are continuous, so to perform grid search, one selects a finite set of "reasonable" values for each, say</p><dl style="margin-top:0.2em;margin-bottom:0.5em;font-family:sans-serif;font-size:14px"><dd style="margin-left:1.6em;margin-bottom:0.1em;margin-right:0px"><span class="gmail-mwe-math-element"><span class="gmail-mwe-math-mathml-inline gmail-mwe-math-mathml-a11y" style="display:none;overflow:hidden;width:1px;height:1px;opacity:0;font-size:16.52px">{\displaystyle C\in \{10,100,1000\}}</span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/4124e15320f26a727f12f02d9bc61edc512878fd" class="gmail-mwe-math-fallback-image-inline" alt="C\in \{10,100,1000\}" style="border: 0px; vertical-align: -0.838ex; display: inline-block; width: 19.462ex; height: 2.843ex;"></span></dd><dd style="margin-left:1.6em;margin-bottom:0.1em;margin-right:0px"><span class="gmail-mwe-math-element"><span class="gmail-mwe-math-mathml-inline gmail-mwe-math-mathml-a11y" style="display:none;overflow:hidden;width:1px;height:1px;opacity:0;font-size:16.52px">{\displaystyle \gamma \in \{0.1,0.2,0.5,1.0\}}</span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/add7d5ca68cbe82cefb41c6299f04106c03e120f" class="gmail-mwe-math-fallback-image-inline" alt="\gamma \in \{0.1,0.2,0.5,1.0\}" style="border: 0px; vertical-align: -0.838ex; display: inline-block; width: 21.417ex; height: 2.843ex;"></span></dd></dl><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Grid search then trains an SVM with each pair (<i>C</i>, γ) in the <a href="https://en.wikipedia.org/wiki/Cartesian_product" title="Cartesian product" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Cartesian product</a> of these two sets and evaluates their performance on a held-out validation set (or by internal cross-validation on the training set, in which case multiple SVMs are trained per pair). Finally, the grid search algorithm outputs the settings that achieved the highest score in the validation procedure.</p><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Grid search suffers from the <a href="https://en.wikipedia.org/wiki/Curse_of_dimensionality" title="Curse of dimensionality" style="text-decoration-line:none;color:rgb(11,0,128);background:none">curse of dimensionality</a>, but is often <a href="https://en.wikipedia.org/wiki/Embarrassingly_parallel" title="Embarrassingly parallel" style="text-decoration-line:none;color:rgb(11,0,128);background:none">embarrassingly parallel</a> because typically the hyperparameter settings it evaluates are independent of each other.<sup id="gmail-cite_ref-bergstra_2-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-bergstra-2" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[2]</a></sup></p><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Random_search">Random search</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=3" title="Edit section: Random search" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><div class="gmail-hatnote gmail-navigation-not-searchable" style="font-style:italic;padding-left:1.6em;margin-bottom:0.5em;font-family:sans-serif;font-size:14px">Main article: <a href="https://en.wikipedia.org/wiki/Random_search" title="Random search" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Random search</a></div><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Random Search replaces the exhaustive enumeration of all combinations by selecting them randomly. This can be simply applied to the discrete setting described above, but also generalizes to continuous and mixed spaces. It can outperform Grid search, especially when only a small number of hyperparameters affects the final performance of the machine learning algorithm.<sup id="gmail-cite_ref-bergstra_2-2" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-bergstra-2" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[2]</a></sup> In this case, the optimization problem is said to have a low intrinsic dimensionality.<sup id="gmail-cite_ref-5" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-5" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[5]</a></sup> Random Search is also <a href="https://en.wikipedia.org/wiki/Embarrassingly_parallel" title="Embarrassingly parallel" style="text-decoration-line:none;color:rgb(11,0,128);background:none">embarrassingly parallel</a>, and additionally allows to include prior knowledge by specifying the distribution from which to sample.</p><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Bayesian_optimization">Bayesian optimization</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=4" title="Edit section: Bayesian optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><div class="gmail-hatnote gmail-navigation-not-searchable" style="font-style:italic;padding-left:1.6em;margin-bottom:0.5em;font-family:sans-serif;font-size:14px">Main article: <a href="https://en.wikipedia.org/wiki/Bayesian_optimization" title="Bayesian optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Bayesian optimization</a></div><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Bayesian optimization is a global optimization method for noisy black-box functions. Applied to hyperparameter optimization, Bayesian optimization builds a probabilistic model of the function mapping from hyperparameter values to the objective evaluated on a validation set. By iteratively evaluating a promising hyperparameter configuration based on the current model, and then updating it, Bayesian optimization, aims to gather observations revealing as much information as possible about this function and, in particular, the location of the optimum. It tries to balance exploration (hyperparameters for which the outcome is most uncertain) and exploitation (hyperparameters expected close to the optimum). In practice, Bayesian optimization has been shown<sup id="gmail-cite_ref-hutter_6-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-hutter-6" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[6]</a></sup><sup id="gmail-cite_ref-bergstra11_7-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-bergstra11-7" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[7]</a></sup><sup id="gmail-cite_ref-snoek_8-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-snoek-8" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[8]</a></sup><sup id="gmail-cite_ref-thornton_9-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-thornton-9" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[9]</a></sup> to obtain better results in fewer evaluations compared to grid search and random search, due to the ability to reason about the quality of experiments before they are run.</p><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Gradient-based_optimization">Gradient-based optimization</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=5" title="Edit section: Gradient-based optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">For specific learning algorithms, it is possible to compute the gradient with respect to hyperparameters and then optimize the hyperparameters using gradient descent. The first usage of these techniques was focused on neural networks.<sup id="gmail-cite_ref-10" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-10" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[10]</a></sup> Since then, these methods have been extended to other models such as <a href="https://en.wikipedia.org/wiki/Support_vector_machine" title="Support vector machine" style="text-decoration-line:none;color:rgb(11,0,128);background:none">support vector machines</a><sup id="gmail-cite_ref-11" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-11" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[11]</a></sup> or logistic regression.<sup id="gmail-cite_ref-12" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-12" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[12]</a></sup></p><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">A different approach in order to obtain a gradient with respect to hyperparameters consists in differentiating the steps of an iterative optimization algorithm using <a href="https://en.wikipedia.org/wiki/Automatic_differentiation" title="Automatic differentiation" style="text-decoration-line:none;color:rgb(11,0,128);background:none">automatic differentiation</a>.<sup id="gmail-cite_ref-13" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-13" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[13]</a></sup><sup id="gmail-cite_ref-abs1502.03492_14-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1502.03492-14" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[14]</a></sup></p><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Evolutionary_optimization">Evolutionary optimization</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=6" title="Edit section: Evolutionary optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><div class="gmail-hatnote gmail-navigation-not-searchable" style="font-style:italic;padding-left:1.6em;margin-bottom:0.5em;font-family:sans-serif;font-size:14px">Main article: <a href="https://en.wikipedia.org/wiki/Evolutionary_algorithm" title="Evolutionary algorithm" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Evolutionary algorithm</a></div><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Evolutionary optimization is a methodology for the global optimization of noisy black-box functions. In hyperparameter optimization, evolutionary optimization uses <a href="https://en.wikipedia.org/wiki/Evolutionary_algorithms" class="gmail-mw-redirect" title="Evolutionary algorithms" style="text-decoration-line:none;color:rgb(11,0,128);background:none">evolutionary algorithms</a> to search the space of hyperparameters for a given algorithm.<sup id="gmail-cite_ref-bergstra11_7-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-bergstra11-7" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[7]</a></sup> Evolutionary hyperparameter optimization follows a <a href="https://en.wikipedia.org/wiki/Evolutionary_algorithm#Implementation" title="Evolutionary algorithm" style="text-decoration-line:none;color:rgb(11,0,128);background:none">process</a> inspired by the biological concept of <a href="https://en.wikipedia.org/wiki/Evolution" title="Evolution" style="text-decoration-line:none;color:rgb(11,0,128);background:none">evolution</a>:</p><ol style="margin:0.3em 0px 0px 3.2em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em">Create an initial population of random solutions (i.e., randomly generate tuples of hyperparameters, typically 100+)</li><li style="margin-bottom:0.1em">Evaluate the hyperparameters tuples and acquire their <a href="https://en.wikipedia.org/wiki/Fitness_function" title="Fitness function" style="text-decoration-line:none;color:rgb(11,0,128);background:none">fitness function</a> (e.g., 10-fold <a href="https://en.wikipedia.org/wiki/Cross-validation_(statistics)" title="Cross-validation (statistics)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">cross-validation</a> accuracy of the machine learning algorithm with those hyperparameters)</li><li style="margin-bottom:0.1em">Rank the hyperparameter tuples by their relative fitness</li><li style="margin-bottom:0.1em">Replace the worst-performing hyperparameter tuples with new hyperparameter tuples generated through <a href="https://en.wikipedia.org/wiki/Crossover_(genetic_algorithm)" title="Crossover (genetic algorithm)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">crossover</a> and <a href="https://en.wikipedia.org/wiki/Mutation_(genetic_algorithm)" title="Mutation (genetic algorithm)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">mutation</a></li><li style="margin-bottom:0.1em">Repeat steps 2-4 until satisfactory algorithm performance is reached or algorithm performance is no longer improving</li></ol><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px">Evolutionary optimization has been used in hyperparameter optimization for statistical machine learning algorithms,<sup id="gmail-cite_ref-bergstra11_7-2" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-bergstra11-7" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[7]</a></sup> <a href="https://en.wikipedia.org/wiki/Automated_machine_learning" title="Automated machine learning" style="text-decoration-line:none;color:rgb(11,0,128);background:none">automated machine learning</a>,<sup id="gmail-cite_ref-tpot1_15-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-tpot1-15" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[15]</a></sup><sup id="gmail-cite_ref-tpot2_16-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-tpot2-16" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[16]</a></sup> <a href="https://en.wikipedia.org/wiki/Deep_learning#Deep_neural_networks" title="Deep learning" style="text-decoration-line:none;color:rgb(11,0,128);background:none">deep neural network</a>architecture search,<sup id="gmail-cite_ref-miikkulainen1_17-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-miikkulainen1-17" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[17]</a></sup><sup id="gmail-cite_ref-jaderberg1_18-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-jaderberg1-18" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[18]</a></sup> as well as training of the weights in deep neural networks.<sup id="gmail-cite_ref-such1_19-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-such1-19" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[19]</a></sup></p><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Others">Others</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=7" title="Edit section: Others" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><p style="margin:0.5em 0px;line-height:inherit;font-family:sans-serif;font-size:14px"><a href="https://en.wikipedia.org/wiki/Radial_basis_function" title="Radial basis function" style="text-decoration-line:none;color:rgb(11,0,128);background:none">RBF</a><sup id="gmail-cite_ref-abs1705.08520_20-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1705.08520-20" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[20]</a></sup> and <a href="https://en.wikipedia.org/wiki/Spectral_method" title="Spectral method" style="text-decoration-line:none;color:rgb(11,0,128);background:none">spectral</a><sup id="gmail-cite_ref-abs1706.00764_21-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1706.00764-21" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[21]</a></sup> approaches have also been developed.</p><h2 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-weight:normal;margin:1em 0px 0.25em;overflow:hidden;padding:0px;border-bottom:1px solid rgb(162,169,177);font-family:"Linux Libertine",Georgia,Times,serif;line-height:1.3"><span class="gmail-mw-headline" id="gmail-Open-source_software">Open-source software</span><span class="gmail-mw-editsection" style="font-size:small;margin-left:1em;vertical-align:baseline;line-height:1em;font-family:sans-serif;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=8" title="Edit section: Open-source software" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h2><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Grid_search_2">Grid search</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=9" title="Edit section: Grid search" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/LIBSVM" title="LIBSVM" style="text-decoration-line:none;color:rgb(11,0,128);background:none">LIBSVM</a> comes with scripts for performing grid search.</li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Scikit-learn" title="Scikit-learn" style="text-decoration-line:none;color:rgb(11,0,128);background:none">scikit-learn</a> is a Python package which includes <a rel="nofollow" class="external gmail-text" href="http://scikit-learn.sourceforge.net/modules/grid_search.html" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">grid</a> search.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/autonomio/talos" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Talos</a> includes grid search for <a href="https://en.wikipedia.org/wiki/Keras" title="Keras" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Keras</a>.</li></ul><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Random_search_2">Random search</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=10" title="Edit section: Random search" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/hyperopt/hyperopt" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hyperopt</a>, also via <a rel="nofollow" class="external gmail-text" href="https://github.com/maxpumperla/hyperas" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hyperas</a> and <a rel="nofollow" class="external gmail-text" href="https://github.com/hyperopt/hyperopt-sklearn" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hyperopt-sklearn</a>, are Python packages which include random search.</li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Scikit-learn" title="Scikit-learn" style="text-decoration-line:none;color:rgb(11,0,128);background:none">scikit-learn</a> is a Python package which includes <a rel="nofollow" class="external gmail-text" href="http://scikit-learn.org/stable/modules/generated/sklearn.grid_search.RandomizedSearchCV.html" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">random</a> search.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="http://docs.h2o.ai/h2o/latest-stable/h2o-docs/automl.html" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">H2O AutoML</a> provides automated data preparation, hyperparameter tuning via random search, and stacked ensembles in a distributed machine learning platform.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/autonomio/talos" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Talos</a> includes a customizable random search for <a href="https://en.wikipedia.org/wiki/Keras" title="Keras" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Keras</a>.</li></ul><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Bayesian">Bayesian</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=11" title="Edit section: Bayesian" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/HIPS/Spearmint" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">spearmint</a> Spearmint is a package to perform Bayesian optimization of machine learning algorithms.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://rmcantin.bitbucket.io/html/" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Bayesopt</a>,<sup id="gmail-cite_ref-martinezcantin_22-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-martinezcantin-22" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[22]</a></sup> an efficient implementation of Bayesian optimization in C/C++ with support for Python, Matlab and Octave.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/yelp/MOE" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">MOE</a> MOE is a Python/C++/CUDA library implementing Bayesian Global Optimization using Gaussian Processes.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="http://www.cs.ubc.ca/labs/beta/Projects/autoweka/" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Auto-WEKA</a><sup id="gmail-cite_ref-autoweka_23-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-autoweka-23" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[23]</a></sup> is a Bayesian hyperparameter optimization layer on top of <a href="https://en.wikipedia.org/wiki/Weka_(machine_learning)" title="Weka (machine learning)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">WEKA</a>.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/automl/auto-sklearn" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Auto-sklearn</a><sup id="gmail-cite_ref-autosklearn_24-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-autosklearn-24" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[24]</a></sup> is a Bayesian hyperparameter optimization layer on top of <a href="https://en.wikipedia.org/wiki/Scikit-learn" title="Scikit-learn" style="text-decoration-line:none;color:rgb(11,0,128);background:none">scikit-learn</a>.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/mlr-org/mlrMBO" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">mlrMBO</a>, also with <a rel="nofollow" class="external gmail-text" href="https://github.com/mlr-org/mlr" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">mlr</a>, is an <a href="https://en.wikipedia.org/wiki/R_(programming_language)" title="R (programming language)" style="text-decoration-line:none;color:rgb(11,0,128);background:none">R</a> package for model-based/Bayesian optimization of black-box functions.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/PhilippPro/tuneRanger" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">tuneRanger</a> is an R package for tuning random forests using model-based optimization.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/baptistar/BOCS" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">BOCS</a> is a Matlab package which uses <a href="https://en.wikipedia.org/wiki/Semidefinite_programming" title="Semidefinite programming" style="text-decoration-line:none;color:rgb(11,0,128);background:none">semidefinite programming</a> for minimizing a black-box function over discrete inputs.<sup id="gmail-cite_ref-arXiv:1806.08838_25-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-arXiv:1806.08838-25" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[25]</a></sup> A Python 3 implementation is also included.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/automl/SMAC3" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">SMAC</a> SMAC is a Python/Java library implementing Bayesian Optimization. <sup id="gmail-cite_ref-SMAC_26-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-SMAC-26" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[26]</a></sup></li></ul><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Gradient_based">Gradient based</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=12" title="Edit section: Gradient based" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/HIPS/hypergrad" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hypergrad</a> is a Python package for differentiation with respect to hyperparameters.<sup id="gmail-cite_ref-abs1502.03492_14-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1502.03492-14" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[14]</a></sup></li></ul><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Evolutionary">Evolutionary</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=13" title="Edit section: Evolutionary" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/rhiever/tpot" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">TPOT</a><sup id="gmail-cite_ref-tpot1_15-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-tpot1-15" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[15]</a></sup><sup id="gmail-cite_ref-tpot2_16-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-tpot2-16" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[16]</a></sup> is a Python package that automatically creates and optimizes full machine learning pipelines using <a href="https://en.wikipedia.org/wiki/Genetic_programming" title="Genetic programming" style="text-decoration-line:none;color:rgb(11,0,128);background:none">genetic programming</a>.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/joeddav/devol" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">devol</a> is a Python package that performs Deep Neural Network architecture search using <a href="https://en.wikipedia.org/wiki/Genetic_programming" title="Genetic programming" style="text-decoration-line:none;color:rgb(11,0,128);background:none">genetic programming</a>.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/DEAP/deap" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">deap</a> is a Python framework for general evolutionary computation which is flexible and integrates with parallelization packages like <a rel="nofollow" class="external gmail-text" href="https://github.com/soravux/scoop" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">scoop</a> and <a href="https://en.wikipedia.org/wiki/Apache_Spark" title="Apache Spark" style="text-decoration-line:none;color:rgb(11,0,128);background:none">pyspark</a>, and other Python frameworks like <a href="https://en.wikipedia.org/wiki/Scikit-learn" title="Scikit-learn" style="text-decoration-line:none;color:rgb(11,0,128);background:none">sklearn</a> via <a rel="nofollow" class="external gmail-text" href="https://github.com/rsteca/sklearn-deap" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">sklearn-deap</a>.</li></ul><h3 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;margin:0.3em 0px 0px;overflow:hidden;padding-top:0.5em;padding-bottom:0px;border-bottom:0px;font-size:1.2em;line-height:1.6;font-family:sans-serif"><span class="gmail-mw-headline" id="gmail-Other">Other</span><span class="gmail-mw-editsection" style="font-size:small;font-weight:normal;margin-left:1em;vertical-align:baseline;line-height:1em;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=14" title="Edit section: Other" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h3><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/hyperopt/hyperopt" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hyperopt</a>, also via <a rel="nofollow" class="external gmail-text" href="https://github.com/maxpumperla/hyperas" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hyperas</a> and <a rel="nofollow" class="external gmail-text" href="https://github.com/hyperopt/hyperopt-sklearn" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">hyperopt-sklearn</a>, are Python packages which include <a href="https://en.wikipedia.org/wiki/Kernel_density_estimation" title="Kernel density estimation" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Tree of Parzen Estimators</a> based distributed hyperparameter optimization.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/CMA-ES/pycma" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">pycma</a> is a Python implementation of <a href="https://en.wikipedia.org/wiki/CMA-ES" title="CMA-ES" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Covariance Matrix Adaptation Evolution Strategy</a>.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="http://sumo.intec.ugent.be/" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">SUMO-Toolbox</a><sup id="gmail-cite_ref-gorissen_27-0" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-gorissen-27" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[27]</a></sup> is a <a href="https://en.wikipedia.org/wiki/MATLAB" title="MATLAB" style="text-decoration-line:none;color:rgb(11,0,128);background:none">MATLAB</a> toolbox for <a href="https://en.wikipedia.org/wiki/Surrogate_model" title="Surrogate model" style="text-decoration-line:none;color:rgb(11,0,128);background:none">surrogate modeling</a> supporting a wide collection of hyperparameter optimization algorithm for many model types.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/coin-or/rbfopt" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">rbfopt</a> is a Python package that uses a <a href="https://en.wikipedia.org/wiki/Radial_basis_function" title="Radial basis function" style="text-decoration-line:none;color:rgb(11,0,128);background:none">radial basis function</a> model<sup id="gmail-cite_ref-abs1705.08520_20-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1705.08520-20" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[20]</a></sup></li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://github.com/callowbird/Harmonica" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Harmonica</a> is a Python package for spectral hyperparameter optimization.<sup id="gmail-cite_ref-abs1706.00764_21-1" class="gmail-reference" style="line-height:1;unicode-bidi:isolate;white-space:nowrap;font-size:11.2px"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_note-abs1706.00764-21" style="text-decoration-line:none;color:rgb(11,0,128);background:none">[21]</a></sup></li></ul><h2 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-weight:normal;margin:1em 0px 0.25em;overflow:hidden;padding:0px;border-bottom:1px solid rgb(162,169,177);font-family:"Linux Libertine",Georgia,Times,serif;line-height:1.3"><span class="gmail-mw-headline" id="gmail-Commercial_services">Commercial services</span><span class="gmail-mw-editsection" style="font-size:small;margin-left:1em;vertical-align:baseline;line-height:1em;font-family:sans-serif;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=15" title="Edit section: Commercial services" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h2><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://bigml.com/api/optimls" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">BigML OptiML</a> supports mixed search domains</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://cloud.google.com/ml-engine/docs/tensorflow/using-hyperparameter-tuning" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Google HyperTune</a> supports mixed search domains</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://indiesolver.com/" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Indie Solver</a> supports multiobjective, multifidelity and constraint optimization</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://sigopt.com/" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">SigOpt</a> supports mixed search domains, multiobjective, multisolution, multifidelity, constraint (linear and black-box), and parallel optimization.</li><li style="margin-bottom:0.1em"><a rel="nofollow" class="external gmail-text" href="https://mindfoundry.ai/OPTaaS" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">Mind Foundry OPTaaS</a> supports mixed search domains, multiobjective, constraints, parallel optimization and surrogate models.</li></ul><h2 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-weight:normal;margin:1em 0px 0.25em;overflow:hidden;padding:0px;border-bottom:1px solid rgb(162,169,177);font-family:"Linux Libertine",Georgia,Times,serif;line-height:1.3"><span class="gmail-mw-headline" id="gmail-See_also">See also</span><span class="gmail-mw-editsection" style="font-size:small;margin-left:1em;vertical-align:baseline;line-height:1em;font-family:sans-serif;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=16" title="Edit section: See also" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h2><ul style="margin:0.3em 0px 0px 1.6em;padding:0px;font-family:sans-serif;font-size:14px"><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Automated_machine_learning" title="Automated machine learning" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Automated machine learning</a> (AutoML)</li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Bias-variance_dilemma" class="gmail-mw-redirect" title="Bias-variance dilemma" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Bias-variance dilemma</a></li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Dimensionality_reduction" title="Dimensionality reduction" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Dimensionality reduction</a></li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Feature_selection" title="Feature selection" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Feature selection</a></li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Meta-optimization" title="Meta-optimization" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Meta-optimization</a></li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Model_selection" title="Model selection" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Model selection</a></li><li style="margin-bottom:0.1em"><a href="https://en.wikipedia.org/wiki/Self-tuning" title="Self-tuning" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Self-tuning</a></li></ul><h2 style="color:rgb(0,0,0);background-image:none;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;font-weight:normal;margin:1em 0px 0.25em;overflow:hidden;padding:0px;border-bottom:1px solid rgb(162,169,177);font-family:"Linux Libertine",Georgia,Times,serif;line-height:1.3"><span class="gmail-mw-headline" id="gmail-References">References</span><span class="gmail-mw-editsection" style="font-size:small;margin-left:1em;vertical-align:baseline;line-height:1em;font-family:sans-serif;white-space:nowrap;unicode-bidi:isolate"><span class="gmail-mw-editsection-bracket" style="margin-right:0.25em;color:rgb(84,89,93)">[</span><a href="https://en.wikipedia.org/w/index.php?title=Hyperparameter_optimization&action=edit&section=17" title="Edit section: References" style="text-decoration-line:none;color:rgb(11,0,128);background:none">edit</a><span class="gmail-mw-editsection-bracket" style="margin-left:0.25em;color:rgb(84,89,93)">]</span></span></h2><div class="gmail-reflist gmail-columns gmail-references-column-width" style="font-size:12.6px;margin-bottom:0.5em;margin-top:0.3em;font-family:sans-serif;column-width:30em;list-style-type:decimal"><ol class="gmail-references" style="margin:0px 0px 0px 3.2em;padding:0px;font-size:12.6px;list-style-type:inherit"><li id="gmail-cite_note-abs1502.02127-1" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1502.02127_1-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1502.02127_1-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Claesen, Marc; Bart De Moor (2015). "Hyperparameter Search in Machine Learning". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1502.02127" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1502.02127</a></span> [<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/cs.LG" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">cs.LG</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Hyperparameter+Search+in+Machine+Learning&rft.date=2015&rft_id=info%3Aarxiv%2F1502.02127&rft.aulast=Claesen&rft.aufirst=Marc&rft.au=Bart+De+Moor&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-bergstra-2" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-bergstra_2-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-bergstra_2-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-bergstra_2-2" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>c</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Bergstra, James; Bengio, Yoshua (2012). <a rel="nofollow" class="external gmail-text" href="http://jmlr.csail.mit.edu/papers/volume13/bergstra12a/bergstra12a.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Random Search for Hyper-Parameter Optimization"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>J. Machine Learning Research</i>. <b>13</b>: 281–305.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=J.+Machine+Learning+Research&rft.atitle=Random+Search+for+Hyper-Parameter+Optimization&rft.volume=13&rft.pages=281-305&rft.date=2012&rft.aulast=Bergstra&rft.aufirst=James&rft.au=Bengio%2C+Yoshua&rft_id=http%3A%2F%2Fjmlr.csail.mit.edu%2Fpapers%2Fvolume13%2Fbergstra12a%2Fbergstra12a.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-3" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-3" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text">Chin-Wei Hsu, Chih-Chung Chang and Chih-Jen Lin (2010). <a rel="nofollow" class="external gmail-text" href="http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">A practical guide to support vector classification</a>. Technical Report, <a href="https://en.wikipedia.org/wiki/National_Taiwan_University" title="National Taiwan University" style="text-decoration-line:none;color:rgb(11,0,128);background:none">National Taiwan University</a>.</span></li><li id="gmail-cite_note-4" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-4" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Chicco D (December 2017). <a rel="nofollow" class="external gmail-text" href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5721660" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">"Ten quick tips for machine learning in computational biology"</a>. <i>BioData Mining</i>. <b>10</b> (35): 35. <a href="https://en.wikipedia.org/wiki/Digital_object_identifier" title="Digital object identifier" style="text-decoration-line:none;color:rgb(11,0,128);background:none">doi</a>:<a rel="nofollow" class="external gmail-text" href="https://doi.org/10.1186%2Fs13040-017-0155-3" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">10.1186/s13040-017-0155-3</a>. <a href="https://en.wikipedia.org/wiki/PubMed_Central" title="PubMed Central" style="text-decoration-line:none;color:rgb(11,0,128);background:none">PMC</a> <span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC5721660" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">5721660</a></span>. <a href="https://en.wikipedia.org/wiki/PubMed_Identifier" class="gmail-mw-redirect" title="PubMed Identifier" style="text-decoration-line:none;color:rgb(11,0,128);background:none">PMID</a> <a rel="nofollow" class="external gmail-text" href="https://www.ncbi.nlm.nih.gov/pubmed/29234465" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">29234465</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=BioData+Mining&rft.atitle=Ten+quick+tips+for+machine+learning+in+computational+biology&rft.volume=10&rft.issue=35&rft.pages=35&rft.date=2017-12&rft_id=%2F%2Fwww.ncbi.nlm.nih.gov%2Fpmc%2Farticles%2FPMC5721660&rft_id=info%3Apmid%2F29234465&rft_id=info%3Adoi%2F10.1186%2Fs13040-017-0155-3&rft.aulast=Chicco&rft.aufirst=D&rft_id=%2F%2Fwww.ncbi.nlm.nih.gov%2Fpmc%2Farticles%2FPMC5721660&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-5" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-5" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Ziyu, Wang; Frank, Hutter; Masrour, Zoghi; David, Matheson; Nando, de Feitas (2016). <a rel="nofollow" class="external gmail-text" href="http://jair.org/papers/paper4806.html" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">"Bayesian Optimization in a Billion Dimensions via Random Embeddings"</a>. <i>Journal of Artificial Intelligence Research</i>. <b>55</b>: 361–387. <a href="https://en.wikipedia.org/wiki/Digital_object_identifier" title="Digital object identifier" style="text-decoration-line:none;color:rgb(11,0,128);background:none">doi</a>:<a rel="nofollow" class="external gmail-text" href="https://doi.org/10.1613%2Fjair.4806" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">10.1613/jair.4806</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+Artificial+Intelligence+Research&rft.atitle=Bayesian+Optimization+in+a+Billion+Dimensions+via+Random+Embeddings&rft.volume=55&rft.pages=361-387&rft.date=2016&rft_id=info%3Adoi%2F10.1613%2Fjair.4806&rft.aulast=Ziyu&rft.aufirst=Wang&rft.au=Frank%2C+Hutter&rft.au=Masrour%2C+Zoghi&rft.au=David%2C+Matheson&rft.au=Nando%2C+de+Feitas&rft_id=http%3A%2F%2Fjair.org%2Fpapers%2Fpaper4806.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-hutter-6" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-hutter_6-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite id="gmail-CITEREFHutterHoosLeyton-Brown2011" class="gmail-citation" style="font-style:inherit">Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2011), <a rel="nofollow" class="external gmail-text" href="http://www.cs.ubc.ca/labs/beta/Projects/SMAC/papers/11-LION5-SMAC.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Sequential model-based optimization for general algorithm configuration"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>, <i>Learning and Intelligent Optimization</i></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Learning+and+Intelligent+Optimization&rft.atitle=Sequential+model-based+optimization+for+general+algorithm+configuration&rft.date=2011&rft.aulast=Hutter&rft.aufirst=Frank&rft.au=Hoos%2C+Holger&rft.au=Leyton-Brown%2C+Kevin&rft_id=http%3A%2F%2Fwww.cs.ubc.ca%2Flabs%2Fbeta%2FProjects%2FSMAC%2Fpapers%2F11-LION5-SMAC.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-bergstra11-7" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-bergstra11_7-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-bergstra11_7-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-bergstra11_7-2" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>c</b></i></sup></a></span> <span class="gmail-reference-text"><cite id="gmail-CITEREFBergstraBardenetBengioKegl2011" class="gmail-citation" style="font-style:inherit">Bergstra, James; Bardenet, Remi; Bengio, Yoshua; Kegl, Balazs (2011), <a rel="nofollow" class="external gmail-text" href="http://papers.nips.cc/paper/4443-algorithms-for-hyper-parameter-optimization.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Algorithms for hyper-parameter optimization"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>, <i>Advances in Neural Information Processing Systems</i></cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Advances+in+Neural+Information+Processing+Systems&rft.atitle=Algorithms+for+hyper-parameter+optimization&rft.date=2011&rft.aulast=Bergstra&rft.aufirst=James&rft.au=Bardenet%2C+Remi&rft.au=Bengio%2C+Yoshua&rft.au=Kegl%2C+Balazs&rft_id=http%3A%2F%2Fpapers.nips.cc%2Fpaper%2F4443-algorithms-for-hyper-parameter-optimization.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-snoek-8" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-snoek_8-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Snoek, Jasper; Larochelle, Hugo; Adams, Ryan (2012). <a rel="nofollow" class="external gmail-text" href="http://papers.nips.cc/paper/4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Practical Bayesian Optimization of Machine Learning Algorithms"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>Advances in Neural Information Processing Systems</i>. <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1206.2944" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1206.2944</a></span>. <a href="https://en.wikipedia.org/wiki/Bibcode" title="Bibcode" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Bibcode</a>:<a rel="nofollow" class="external gmail-text" href="http://adsabs.harvard.edu/abs/2012arXiv1206.2944S" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">2012arXiv1206.2944S</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Advances+in+Neural+Information+Processing+Systems&rft.atitle=Practical+Bayesian+Optimization+of+Machine+Learning+Algorithms&rft.date=2012&rft_id=info%3Aarxiv%2F1206.2944&rft_id=info%3Abibcode%2F2012arXiv1206.2944S&rft.aulast=Snoek&rft.aufirst=Jasper&rft.au=Larochelle%2C+Hugo&rft.au=Adams%2C+Ryan&rft_id=http%3A%2F%2Fpapers.nips.cc%2Fpaper%2F4522-practical-bayesian-optimization-of-machine-learning-algorithms.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-thornton-9" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-thornton_9-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Thornton, Chris; Hutter, Frank; Hoos, Holger; Leyton-Brown, Kevin (2013). <a rel="nofollow" class="external gmail-text" href="http://www.cs.ubc.ca/labs/beta/Projects/autoweka/papers/autoweka.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Auto-WEKA: Combined selection and hyperparameter optimization of classification algorithms"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>Knowledge Discovery and Data Mining</i>. <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1208.3719" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1208.3719</a></span>. <a href="https://en.wikipedia.org/wiki/Bibcode" title="Bibcode" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Bibcode</a>:<a rel="nofollow" class="external gmail-text" href="http://adsabs.harvard.edu/abs/2012arXiv1208.3719T" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">2012arXiv1208.3719T</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Knowledge+Discovery+and+Data+Mining&rft.atitle=Auto-WEKA%3A+Combined+selection+and+hyperparameter+optimization+of+classification+algorithms&rft.date=2013&rft_id=info%3Aarxiv%2F1208.3719&rft_id=info%3Abibcode%2F2012arXiv1208.3719T&rft.aulast=Thornton&rft.aufirst=Chris&rft.au=Hutter%2C+Frank&rft.au=Hoos%2C+Holger&rft.au=Leyton-Brown%2C+Kevin&rft_id=http%3A%2F%2Fwww.cs.ubc.ca%2Flabs%2Fbeta%2FProjects%2Fautoweka%2Fpapers%2Fautoweka.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-10" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-10" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Larsen, Jan; Hansen, Lars Kai; Svarer, Claus; Ohlsson, M (1996). "Design and regularization of neural networks: the optimal use of a validation set". <i>Proceedings of the 1996 IEEE Signal Processing Society Workshop</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Proceedings+of+the+1996+IEEE+Signal+Processing+Society+Workshop&rft.atitle=Design+and+regularization+of+neural+networks%3A+the+optimal+use+of+a+validation+set&rft.date=1996&rft.aulast=Larsen&rft.aufirst=Jan&rft.au=Hansen%2C+Lars+Kai&rft.au=Svarer%2C+Claus&rft.au=Ohlsson%2C+M&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-11" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-11" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Olivier Chapelle; Vladimir Vapnik; Olivier Bousquet; Sayan Mukherjee (2002). <a rel="nofollow" class="external gmail-text" href="http://www.chapelle.cc/olivier/pub/mlj02.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Choosing multiple parameters for support vector machines"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>Machine Learning</i>. <b>46</b>: 131–159. <a href="https://en.wikipedia.org/wiki/Digital_object_identifier" title="Digital object identifier" style="text-decoration-line:none;color:rgb(11,0,128);background:none">doi</a>:<a rel="nofollow" class="external gmail-text" href="https://doi.org/10.1023%2Fa%3A1012450327387" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">10.1023/a:1012450327387</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Machine+Learning&rft.atitle=Choosing+multiple+parameters+for+support+vector+machines&rft.volume=46&rft.pages=131-159&rft.date=2002&rft_id=info%3Adoi%2F10.1023%2Fa%3A1012450327387&rft.au=Olivier+Chapelle&rft.au=Vladimir+Vapnik&rft.au=Olivier+Bousquet&rft.au=Sayan+Mukherjee&rft_id=http%3A%2F%2Fwww.chapelle.cc%2Folivier%2Fpub%2Fmlj02.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-12" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-12" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Chuong B; Chuan-Sheng Foo; Andrew Y Ng (2008). "Efficient multiple hyperparameter learning for log-linear models". <i>Advances in Neural Information Processing Systems 20</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Advances+in+Neural+Information+Processing+Systems+20&rft.atitle=Efficient+multiple+hyperparameter+learning+for+log-linear+models&rft.date=2008&rft.au=Chuong+B&rft.au=Chuan-Sheng+Foo&rft.au=Andrew+Y+Ng&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-13" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-13" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Domke, Justin (2012). <a rel="nofollow" class="external gmail-text" href="http://www.jmlr.org/proceedings/papers/v22/domke12/domke12.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Generic Methods for Optimization-Based Modeling"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>Aistats</i>. <b>22</b>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Aistats&rft.atitle=Generic+Methods+for+Optimization-Based+Modeling&rft.volume=22&rft.date=2012&rft.aulast=Domke&rft.aufirst=Justin&rft_id=http%3A%2F%2Fwww.jmlr.org%2Fproceedings%2Fpapers%2Fv22%2Fdomke12%2Fdomke12.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-abs1502.03492-14" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1502.03492_14-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1502.03492_14-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Maclaurin, Douglas; Duvenaud, David; Adams, Ryan P. (2015). "Gradient-based Hyperparameter Optimization through Reversible Learning". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1502.03492" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1502.03492</a></span>[<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/stat.ML" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">stat.ML</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Gradient-based+Hyperparameter+Optimization+through+Reversible+Learning&rft.date=2015&rft_id=info%3Aarxiv%2F1502.03492&rft.aulast=Maclaurin&rft.aufirst=Douglas&rft.au=Duvenaud%2C+David&rft.au=Adams%2C+Ryan+P.&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-tpot1-15" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-tpot1_15-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-tpot1_15-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-book" style="font-style:inherit">Olson RS, Urbanowicz RJ, Andrews PC, Lavender NA, Kidd L, Moore JH (2016). <i>Automating biomedical data science through tree-based pipeline optimization</i>. <i>Proceedings of EvoStar 2016</i>. Lecture Notes in Computer Science. <b>9597</b>. pp. 123–137. <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1601.07925" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1601.07925</a></span>. <a href="https://en.wikipedia.org/wiki/Digital_object_identifier" title="Digital object identifier" style="text-decoration-line:none;color:rgb(11,0,128);background:none">doi</a>:<a rel="nofollow" class="external gmail-text" href="https://doi.org/10.1007%2F978-3-319-31204-0_9" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">10.1007/978-3-319-31204-0_9</a>. <a href="https://en.wikipedia.org/wiki/International_Standard_Book_Number" title="International Standard Book Number" style="text-decoration-line:none;color:rgb(11,0,128);background:none">ISBN</a> <a href="https://en.wikipedia.org/wiki/Special:BookSources/978-3-319-31203-3" title="Special:BookSources/978-3-319-31203-3" style="text-decoration-line:none;color:rgb(11,0,128);background:none">978-3-319-31203-3</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Automating+biomedical+data+science+through+tree-based+pipeline+optimization&rft.series=Lecture+Notes+in+Computer+Science&rft.pages=123-137&rft.date=2016&rft_id=info%3Aarxiv%2F1601.07925&rft_id=info%3Adoi%2F10.1007%2F978-3-319-31204-0_9&rft.isbn=978-3-319-31203-3&rft.aulast=Olson&rft.aufirst=RS&rft.au=Urbanowicz%2C+RJ&rft.au=Andrews%2C+PC&rft.au=Lavender%2C+NA&rft.au=Kidd%2C+L&rft.au=Moore%2C+JH&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-tpot2-16" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-tpot2_16-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-tpot2_16-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-book" style="font-style:inherit">Olson RS, Bartley N, Urbanowicz RJ, Moore JH (2016). <a rel="nofollow" class="external gmail-text" href="https://dl.acm.org/citation.cfm?id=2908918" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px"><i>Evaluation of a Tree-based Pipeline Optimization Tool for Automating Data Science</i></a>. <i>Proceedings of EvoBIO 2016</i>. Gecco '16. pp. 485–492. <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1603.06212" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1603.06212</a></span>. <a href="https://en.wikipedia.org/wiki/Digital_object_identifier" title="Digital object identifier" style="text-decoration-line:none;color:rgb(11,0,128);background:none">doi</a>:<a rel="nofollow" class="external gmail-text" href="https://doi.org/10.1145%2F2908812.2908918" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">10.1145/2908812.2908918</a>. <a href="https://en.wikipedia.org/wiki/International_Standard_Book_Number" title="International Standard Book Number" style="text-decoration-line:none;color:rgb(11,0,128);background:none">ISBN</a> <a href="https://en.wikipedia.org/wiki/Special:BookSources/9781450342063" title="Special:BookSources/9781450342063" style="text-decoration-line:none;color:rgb(11,0,128);background:none">9781450342063</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=book&rft.btitle=Evaluation+of+a+Tree-based+Pipeline+Optimization+Tool+for+Automating+Data+Science&rft.series=Gecco+%2716&rft.pages=485-492&rft.date=2016&rft_id=info%3Aarxiv%2F1603.06212&rft_id=info%3Adoi%2F10.1145%2F2908812.2908918&rft.isbn=9781450342063&rft.aulast=Olson&rft.aufirst=RS&rft.au=Bartley%2C+N&rft.au=Urbanowicz%2C+RJ&rft.au=Moore%2C+JH&rft_id=https%3A%2F%2Fdl.acm.org%2Fcitation.cfm%3Fid%3D2908918&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-miikkulainen1-17" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-miikkulainen1_17-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Miikkulainen R, Liang J, Meyerson E, Rawal A, Fink D, Francon O, Raju B, Shahrzad H, Navruzyan A, Duffy N, Hodjat B (2017). "Evolving Deep Neural Networks". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1703.00548" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1703.00548</a></span> [<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/cs.NE" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">cs.NE</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Evolving+Deep+Neural+Networks&rft.date=2017&rft_id=info%3Aarxiv%2F1703.00548&rft.aulast=Miikkulainen&rft.aufirst=R&rft.au=Liang%2C+J&rft.au=Meyerson%2C+E&rft.au=Rawal%2C+A&rft.au=Fink%2C+D&rft.au=Francon%2C+O&rft.au=Raju%2C+B&rft.au=Shahrzad%2C+H&rft.au=Navruzyan%2C+A&rft.au=Duffy%2C+N&rft.au=Hodjat%2C+B&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-jaderberg1-18" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-jaderberg1_18-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Jaderberg M, Dalibard V, Osindero S, Czarnecki WM, Donahue J, Razavi A, Vinyals O, Green T, Dunning I, Simonyan K, Fernando C, Kavukcuoglu K (2017). "Population Based Training of Neural Networks". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1711.09846" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1711.09846</a></span> [<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/cs.LG" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">cs.LG</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Population+Based+Training+of+Neural+Networks&rft.date=2017&rft_id=info%3Aarxiv%2F1711.09846&rft.aulast=Jaderberg&rft.aufirst=M&rft.au=Dalibard%2C+V&rft.au=Osindero%2C+S&rft.au=Czarnecki%2C+WM&rft.au=Donahue%2C+J&rft.au=Razavi%2C+A&rft.au=Vinyals%2C+O&rft.au=Green%2C+T&rft.au=Dunning%2C+I&rft.au=Simonyan%2C+K&rft.au=Fernando%2C+C&rft.au=Kavukcuoglu%2C+K&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-such1-19" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-such1_19-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Such FP, Madhavan V, Conti E, Lehman J, Stanley KO, Clune J (2017). "Deep Neuroevolution: Genetic Algorithms Are a Competitive Alternative for Training Deep Neural Networks for Reinforcement Learning". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1712.06567" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1712.06567</a></span> [<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/cs.NE" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">cs.NE</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Deep+Neuroevolution%3A+Genetic+Algorithms+Are+a+Competitive+Alternative+for+Training+Deep+Neural+Networks+for+Reinforcement+Learning&rft.date=2017&rft_id=info%3Aarxiv%2F1712.06567&rft.aulast=Such&rft.aufirst=FP&rft.au=Madhavan%2C+V&rft.au=Conti%2C+E&rft.au=Lehman%2C+J&rft.au=Stanley%2C+KO&rft.au=Clune%2C+J&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-abs1705.08520-20" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1705.08520_20-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1705.08520_20-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Diaz, Gonzalo; Fokoue, Achille; Nannicini, Giacomo; Samulowitz, Horst (2017). "An effective algorithm for hyperparameter optimization of neural networks". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1705.08520" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1705.08520</a></span>[<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/cs.AI" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">cs.AI</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=An+effective+algorithm+for+hyperparameter+optimization+of+neural+networks&rft.date=2017&rft_id=info%3Aarxiv%2F1705.08520&rft.aulast=Diaz&rft.aufirst=Gonzalo&rft.au=Fokoue%2C+Achille&rft.au=Nannicini%2C+Giacomo&rft.au=Samulowitz%2C+Horst&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-abs1706.00764-21" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;">^ <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1706.00764_21-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up to:</span><sup style="line-height:1;font-size:10.08px"><i><b>a</b></i></sup></a> <a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-abs1706.00764_21-1" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><sup style="line-height:1;font-size:10.08px"><i><b>b</b></i></sup></a></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Hazan, Elad; Klivans, Adam; Yuan, Yang (2017). "Hyperparameter Optimization: A Spectral Approach". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1706.00764" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1706.00764</a></span> [<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/cs.LG" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">cs.LG</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Hyperparameter+Optimization%3A+A+Spectral+Approach&rft.date=2017&rft_id=info%3Aarxiv%2F1706.00764&rft.aulast=Hazan&rft.aufirst=Elad&rft.au=Klivans%2C+Adam&rft.au=Yuan%2C+Yang&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-martinezcantin-22" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-martinezcantin_22-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Martinez-Cantin, Ruben (2014). <a rel="nofollow" class="external gmail-text" href="http://jmlr.org/papers/volume15/martinezcantin14a/martinezcantin14a.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"BayesOpt: A Bayesian Optimization Library for Nonlinear Optimization, Experimental Design and Bandits"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>Journal of Machine Learning Research</i>. <b>15</b>: 3915−3919. <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1405.7430" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1405.7430</a></span>. <a href="https://en.wikipedia.org/wiki/Bibcode" title="Bibcode" style="text-decoration-line:none;color:rgb(11,0,128);background:none">Bibcode</a>:<a rel="nofollow" class="external gmail-text" href="http://adsabs.harvard.edu/abs/2014arXiv1405.7430M" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">2014arXiv1405.7430M</a>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+Machine+Learning+Research&rft.atitle=BayesOpt%3A+A+Bayesian+Optimization+Library+for+Nonlinear+Optimization%2C+Experimental+Design+and+Bandits&rft.volume=15&rft.pages=3915%E2%88%923919&rft.date=2014&rft_id=info%3Aarxiv%2F1405.7430&rft_id=info%3Abibcode%2F2014arXiv1405.7430M&rft.aulast=Martinez-Cantin&rft.aufirst=Ruben&rft_id=http%3A%2F%2Fjmlr.org%2Fpapers%2Fvolume15%2Fmartinezcantin14a%2Fmartinezcantin14a.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-autoweka-23" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-autoweka_23-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Kotthoff L, Thornton C, Hoos HH, Hutter F, Leyton-Brown K (2017). <a rel="nofollow" class="external gmail-text" href="http://jmlr.org/papers/v18/16-261.html" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">"Auto-WEKA 2.0: Automatic model selection and hyperparameter optimization in WEKA"</a>. <i>Journal of Machine Learning Research</i>. <b>18</b> (25): 1–5.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Journal+of+Machine+Learning+Research&rft.atitle=Auto-WEKA+2.0%3A+Automatic+model+selection+and+hyperparameter+optimization+in+WEKA&rft.volume=18&rft.issue=25&rft.pages=1-5&rft.date=2017&rft.aulast=Kotthoff&rft.aufirst=L&rft.au=Thornton%2C+C&rft.au=Hoos%2C+HH&rft.au=Hutter%2C+F&rft.au=Leyton-Brown%2C+K&rft_id=http%3A%2F%2Fjmlr.org%2Fpapers%2Fv18%2F16-261.html&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-autosklearn-24" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-autosklearn_24-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Feurer M, Klein A, Eggensperger K, Springenberg J, Blum M, Hutter F (2015). <a rel="nofollow" class="external gmail-text" href="https://papers.nips.cc/paper/5872-efficient-and-robust-automated-machine-learning" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">"Efficient and Robust Automated Machine Learning"</a>. <i>Advances in Neural Information Processing Systems 28 (NIPS 2015)</i>: 2962–2970.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Advances+in+Neural+Information+Processing+Systems+28+%28NIPS+2015%29&rft.atitle=Efficient+and+Robust+Automated+Machine+Learning&rft.pages=2962-2970&rft.date=2015&rft.aulast=Feurer&rft.aufirst=M&rft.au=Klein%2C+A&rft.au=Eggensperger%2C+K&rft.au=Springenberg%2C+J&rft.au=Blum%2C+M&rft.au=Hutter%2C+F&rft_id=https%3A%2F%2Fpapers.nips.cc%2Fpaper%2F5872-efficient-and-robust-automated-machine-learning&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-arXiv:1806.08838-25" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-arXiv:1806.08838_25-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-arxiv" style="font-style:inherit">Baptista, Ricardo; Poloczek, Matthias (2018). "Bayesian Optimization of Combinatorial Structures". <a href="https://en.wikipedia.org/wiki/ArXiv" title="ArXiv" style="text-decoration-line:none;color:rgb(11,0,128);background:none">arXiv</a>:<span class="gmail-cs1-lock-free" title="Freely accessible"><a rel="nofollow" class="external gmail-text" href="https://arxiv.org/abs/1806.08838" style="text-decoration-line:none;color:rgb(102,51,102);background-image:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png");background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;background-color:initial;padding-right:13px">1806.08838</a></span> [<a rel="nofollow" class="external gmail-text" href="https://arxiv.org/archive/stat.ML" style="text-decoration-line:none;color:rgb(102,51,102);background-color:initial;padding-right:13px">stat.ML</a>].</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=preprint&rft.jtitle=arXiv&rft.atitle=Bayesian+Optimization+of+Combinatorial+Structures&rft.date=2018&rft_id=info%3Aarxiv%2F1806.08838&rft.aulast=Baptista&rft.aufirst=Ricardo&rft.au=Poloczek%2C+Matthias&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-SMAC-26" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-SMAC_26-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Hutter F, Hoos HH, Leyton-Brown K. <a rel="nofollow" class="external gmail-text" href="https://www.cs.ubc.ca/~hutter/papers/10-TR-SMAC.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"Sequential Model-Based Optimization for General Algorithm Configuration"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>Proceedings of the Conference on Learning and Intelligent OptimizatioN (LION 5)</i>.</cite><span title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.jtitle=Proceedings+of+the+Conference+on+Learning+and+Intelligent+OptimizatioN+%28LION+5%29&rft.atitle=Sequential+Model-Based+Optimization+for+General+Algorithm+Configuration&rft.aulast=Hutter&rft.aufirst=F&rft.au=Hoos%2C+HH&rft.au=Leyton-Brown%2C+K&rft_id=https%3A%2F%2Fwww.cs.ubc.ca%2F~hutter%2Fpapers%2F10-TR-SMAC.pdf&rfr_id=info%3Asid%2Fen.wikipedia.org%3AHyperparameter+optimization" class="gmail-Z3988"></span></span></li><li id="gmail-cite_note-gorissen-27" style="margin-bottom:0.1em;break-inside:avoid-column"><span class="gmail-mw-cite-backlink" style="user-select: none;"><b><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization#cite_ref-gorissen_27-0" style="text-decoration-line:none;color:rgb(11,0,128);background:none"><span class="gmail-cite-accessibility-label" style="overflow:hidden;padding:0px;border:0px;height:1px;width:1px">Jump up</span>^</a></b></span> <span class="gmail-reference-text"><cite class="gmail-citation gmail-journal" style="font-style:inherit">Gorissen, Dirk; Crombecq, Karel; Couckuyt, Ivo; Demeester, Piet; Dhaene, Tom (2010). <a rel="nofollow" class="external gmail-text" href="http://www.jmlr.org/papers/volume11/gorissen10a/gorissen10a.pdf" style="text-decoration-line:none;color:rgb(102,51,102);background:url("//upload.wikimedia.org/wikipedia/commons/2/23/Icons-mini-file_acrobat.gif") 100% 50% no-repeat;padding-right:18px">"A Surrogate Modeling and Adaptive Sampling Toolbox for Computer Based Design"</a> <span class="gmail-cs1-format" style="font-size:11.97px">(PDF)</span>. <i>J. Machine Learning Research</i>. <b>11</b>: 2051–2055.</cite></span></li></ol></div></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-25919368609240329592018-11-24T10:23:00.000+09:002018-11-24T10:24:59.820+09:00How to tune hyperparameters with Python and scikit-learn<div dir="ltr"><div dir="ltr"><a href="https://www.pyimagesearch.com/2016/08/15/how-to-tune-hyperparameters-with-python-and-scikit-learn/">https://www.pyimagesearch.com/2016/08/15/how-to-tune-hyperparameters-with-python-and-scikit-learn/</a><br></div><div dir="ltr"><br></div><div dir="ltr"><h2 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:24px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">How to tune hyperparameters with Python and scikit-learn</h2><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In the remainder of today's tutorial, I'll be demonstrating how to tune k-NN hyperparameters for the <a href="https://www.kaggle.com/c/dogs-vs-cats/data" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">Dogs vs. Cats dataset</a>. We'll start with a discussion on <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">what hyperparameters are</em>, followed by viewing a concrete example on <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">tuning k-NN hyperparameters.</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We'll then explore how to tune k-NN hyperparameters using two search methods: <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Grid Search</em> and <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Randomized Search.</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As our results will demonstrate, we can improve our classification accuracy from <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">57.58% to over 64%!</strong></p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">What are hyperparameters?</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Hyperparameters are simply the knobs and levels you pull and turn when building a machine learning classifier. The process of tuning hyperparameters is more formally called <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><a href="https://en.wikipedia.org/wiki/Hyperparameter_optimization" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">hyperparameter optimization</a></em>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">So what's the difference between a normal "model parameter" and a "hyperparameter"?</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Well, a standard "model parameter" is normally an internal variable that is optimized in some fashion. In the context of Linear Regression, Logistic Regression, and Support Vector Machines, we would think of parameters as the weight vector coefficients found by the learning algorithm.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">On the other hand, "hyperparameters" are normally set by a human designer or tuned via algorithmic approaches. Examples of hyperparameters include the number of neighbors <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">k</em> in the k-Nearest Neighbor algorithm, the learning rate <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">alpha</em> of a Neural Network, or the number of filters learned in a given convolutional layer in a CNN.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In general, model parameters are optimized according to some <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">loss function</em>, while hyperparameters are instead <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">searched for</em> by exploring various settings to see which values provided the highest level of accuracy.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Because of this, it tends to be easier to tune model parameters (since we're optimizing some objective function based on our training data) whereas hyperparameters can require a nearly blind search to find optimal ones.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">k-NN hyperparameters</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As a concrete example of tuning hyperparameters, let's consider the <a href="https://www.pyimagesearch.com/2016/08/08/k-nn-classifier-for-image-classification/" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">k-Nearest Neighbor classification algorithm</a>. For your standard k-NN implementation, there are <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">two primary hyperparameters </em>that you'll want to tune:</p><ol style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">The number of neighbors <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">k</em>.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">The distance metric/similarity function.</li></ol><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Both of these values can dramatically affect the accuracy of your k-NN classifier. To demonstrate this in the context of image classification, let's apply hyperparameter tuning to our Kaggle Dogs vs. Cats dataset from last week.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Open up a new file, name it <span id="gmail-crayon-5bf8a551435c4784356636" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">knn_tune</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">py</span></span></span> , and insert the following code:</p><div id="gmail-crayon-5bf8a551435d4049492402" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:199px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">1</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">2</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">3</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">4</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">5</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">6</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">7</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">8</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">9</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">10</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">11</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">12</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435d4049492402-1" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># import the necessary packages</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435d4049492402-2" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">from</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">sklearn</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">neighbors </span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">KNeighborsClassifier</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435d4049492402-3" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">from</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">sklearn</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">grid_search </span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">RandomizedSearchCV</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435d4049492402-4" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">from</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">sklearn</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">grid_search </span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">GridSearchCV</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435d4049492402-5" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">from</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">sklearn</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">cross_validation </span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">train_test_split</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435d4049492402-6" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">from</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">imutils </span><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">paths</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435d4049492402-7" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">numpy </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">as</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">np</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435d4049492402-8" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">argparse</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435d4049492402-9" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">imutils</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435d4049492402-10" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435d4049492402-11" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">cv2</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435d4049492402-12" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">import</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 2-12</strong> start by importing our required Python packages. We'll be making heavy use of the <a href="http://scikit-learn.org/stable/" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">scikit-learn library</a>, so if you do not have it installed, <a href="http://scikit-learn.org/stable/install.html" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">make sure you follow these instructions</a>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We'll also be using my personal <a href="https://github.com/jrosebr1/imutils" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">imutils library</a>, so make sure you have it installed as well:</p><div id="gmail-crayon-5bf8a551435da599183833" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Shell</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:34px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">1</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:602px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435da599183833-1" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">$</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">pip </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">install </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imutils</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Next, we'll define our <span id="gmail-crayon-5bf8a551435df321519750" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">extract_color_histogram</span></span></span> function:</p><div id="gmail-crayon-5bf8a551435e3111131416" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:289px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">14</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">15</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">16</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">17</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">18</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">19</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">20</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">21</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">22</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">23</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">24</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">25</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">26</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">27</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">28</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">29</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">30</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">31</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-14" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-r" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">def</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">extract_color_histogram</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">bins</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">8</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">8</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">8</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-15" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># extract a 3D color histogram from the HSV color space using</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-16" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># the supplied number of `bins` per channel</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-17" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hsv</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">cvtColor</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">COLOR_BGR2HSV</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-18" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">calcHist</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hsv</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">None</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">bins</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-19" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">180</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">256</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">256</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-20" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-21" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># handle normalizing the histogram if we are using OpenCV 2.4.X</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-22" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imutils</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">is_cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-23" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">normalize</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-24" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-25" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># otherwise, perform "in place" normalization in OpenCV 3 (I</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-26" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># personally hate the way this is done</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-27" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">else</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-28" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">normalize</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-29" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435e3111131416-30" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># return the flattened histogram as the feature vector</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435e3111131416-31" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">return</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">flatten</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">This function accepts an input <span id="gmail-crayon-5bf8a551435e8166203374" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span></span></span> along with a number of <span id="gmail-crayon-5bf8a551435ed406821818" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">bins</span></span></span> for each channel of the image.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We convert the image to the HSV color space and compute a 3D color histogram to characterize the color distribution of the image (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 17-19</strong>).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">This histogram is then flattened into a single <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">8 x 8 x 8 = 512-d</em> feature vector that is returned to the calling function.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">For a more detailed review of this method, <a href="https://www.pyimagesearch.com/2016/08/08/k-nn-classifier-for-image-classification/" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">please refer to last week's blog post</a>.</p><div id="gmail-crayon-5bf8a551435f2537148900" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:244px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">33</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">34</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">35</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">36</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">37</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">38</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">39</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">40</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">41</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">42</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">43</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">44</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">45</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">46</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">47</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-33" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># construct the argument parse and parse the arguments</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-34" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ap</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">argparse</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">ArgumentParser</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-35" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ap</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">add_argument</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"-d"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"--dataset"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">required</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-t" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">True</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-36" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">help</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"path to input dataset"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-37" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ap</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">add_argument</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"-j"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"--jobs"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">type</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">int</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">default</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-38" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">help</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"# of jobs for k-NN distance (-1 uses all available cores)"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-39" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">args</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">vars</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">ap</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">parse_args</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-40" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-41" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># grab the list of images that we'll be describing</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-42" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] describing images..."</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-43" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePaths</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">list</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">paths</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">list_images</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">args</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"dataset"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-44" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-45" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># initialize the data matrix and labels list</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a551435f2537148900-46" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">data</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a551435f2537148900-47" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">labels</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 34-39</strong> handle parsing our command line arguments. We only need two switches here:</p><ul style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf8a551435f8193174005" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">--</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">dataset</span></span></span> : The path to our input Dogs vs. Cats dataset from the Kaggle challenge.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf8a551435fc610350686" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">--</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">jobs</span></span></span> : The number of processors/cores to utilize when computing the nearest neighbors for a particular data point. Setting this value to <span id="gmail-crayon-5bf8a55143600921149104" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span></span></span> indicates <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">all</em> available processors/cores should be used. Again, for a more detailed review of these arguments, <a href="https://www.pyimagesearch.com/2016/08/08/k-nn-classifier-for-image-classification/" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">please refer to last week's tutorial.</a></li></ul><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 43</strong> grabs the paths to our 25,000 input images while <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 46 and 47</strong> initializes the<span id="gmail-crayon-5bf8a55143604964532930" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">data</span></span></span> list (where we'll store the color histogram extracted from each image) and <span id="gmail-crayon-5bf8a55143609225134835" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">labels</span></span></span> list (either "dog" or "cat" for each input image), respectively.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Next, we can loop over our <span id="gmail-crayon-5bf8a5514360d562977346" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePaths</span></span></span> and describe them:</p><div id="gmail-crayon-5bf8a55143611929394209" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:259px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">49</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">50</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">51</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">52</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">53</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">54</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">55</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">56</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">57</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">58</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">59</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">60</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">61</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">62</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">63</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">64</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-49" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># loop over the input images</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-50" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">for</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePath</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">in</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">enumerate</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePaths</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-51" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># load the image and extract the class label (assuming that our</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-52" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># path as the format: /path/to/dataset/{class}.{image_num}.jpg</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-53" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">cv2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">imread</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePath</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-54" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">label</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePath</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">split</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">os.path</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">sep</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">split</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"."</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-55" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-56" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># extract a color histogram from the image, then update the</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-57" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># data matrix and labels list</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-58" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">extract_color_histogram</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-59" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">data</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">append</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">hist</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-60" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">labels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">append</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">label</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-61" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-62" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># show an update every 1,000 images</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143611929394209-63" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">if</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">></span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-st" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">and</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">%</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1000</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">==</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143611929394209-64" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] processed {}/{}"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">i</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">len</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePaths</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 50</strong> starts looping over each of the <span id="gmail-crayon-5bf8a55143617811510599" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePaths</span></span></span> . For each <span id="gmail-crayon-5bf8a5514361c389948715" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">imagePath</span></span></span> , we load it from disk and extract the <span id="gmail-crayon-5bf8a55143620297873810" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">label</span></span></span> (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 53 and 54</strong>).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Now that we have our <span id="gmail-crayon-5bf8a55143624466865807" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">image</span></span></span> , we compute a color histogram (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Line 58</strong>), followed by updating the <span id="gmail-crayon-5bf8a55143628418315271" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">data</span></span></span> and <span id="gmail-crayon-5bf8a5514362c420872445" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">labels</span></span></span> lists (<strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 59 and 60</strong>).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Finally, <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Lines 63 and 64</strong> display the feature extraction progress to our screen.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In order to train and evaluate our k-NN classifier, we'll need to partition our <span id="gmail-crayon-5bf8a55143630625319613" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">data</span></span></span> into two splits: a <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">training split</em> and a <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">testing split</em>:</p><div id="gmail-crayon-5bf8a55143634693442574" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:94px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">66</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">67</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">68</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">69</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">70</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143634693442574-66" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># partition the data into training and testing splits, using 75%</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143634693442574-67" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># of the data for training and the remaining 25% for testing</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143634693442574-68" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] constructing training/testing split..."</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143634693442574-69" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">trainData</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">testData</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">trainLabels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">testLabels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">train_test_split</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143634693442574-70" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">data</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">labels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">test_size</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">0.25</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">random_state</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">42</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Here we'll be using 75% of our data for training and the remaining 25% for evaluation.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Finally, let's define the set of hyperparameters we are going to optimize over:</p><div id="gmail-crayon-5bf8a5514363c790942246" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:64px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">72</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">73</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">74</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a5514363c790942246-72" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># construct the set of hyperparameters to tune</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a5514363c790942246-73" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">params</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">{</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"n_neighbors"</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">np</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">arange</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">1</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">31</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">2</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a5514363c790942246-74" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"metric"</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">:</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"euclidean"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"cityblock"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">}</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The above code block defines a <span id="gmail-crayon-5bf8a55143643250711800" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">params</span></span></span> dictionary which contains two keys:</p><ul style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf8a55143647480408582" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">n_neighbors</span></span></span> : The number of nearest neighbors <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">k</em> in the k-NN algorithm. Here we'll search over the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">odd integers</em> in the range <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">[0, 29]</em> (keep in mind that the <span id="gmail-crayon-5bf8a5514364c989935684" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">np</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">arange</span></span></span> function is <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">exclusive</em>).</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:disc"><span id="gmail-crayon-5bf8a55143650813337614" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">metric</span></span></span> : This is the distance function/similarity metric for k-NN. Normally this defaults to the Euclidean distance, but we could also use any function that returns a single floating point value representing how "similar" two images are. In this case, we'll search over both the <a href="https://en.wikipedia.org/wiki/Euclidean_distance" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">Euclidean distance</a> and <a href="https://en.wikipedia.org/wiki/Taxicab_geometry" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">Manhattan/City block distance</a>.</li></ul><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Now that we have defined the hyperparameters we want to search over, we need a method that actually <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">applies</em> the search. Luckily, the scikit-learn library already has two methods that can perform hyperparameter search for us: <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Grid Search</strong> and <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Randomized Search</strong>.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As we'll find out, it's normally preferable to used Randomized Search over Grid Search in nearly all circumstances.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Grid Search hyperparameters</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The Grid Search tuning algorithm will methodically (and exhaustively) train and evaluate a machine learning classifier for <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">each and every combination</em></strong> of hyperparameter values.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In this case, given 16 unique values of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">k</em> and 2 unique values for our <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">distance metric</em>, a Grid Search will apply <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">30 different experiments to determine the optimal value.</strong></em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">You can see how a Grid Search is performed in the following code segment:</p><div id="gmail-crayon-5bf8a55143655822923349" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:229px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">76</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">77</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">78</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">79</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">80</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">81</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">82</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">83</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">84</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">85</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">86</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">87</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">88</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">89</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:595px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-76" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># tune the hyperparameters via a cross-validated grid search</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-77" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] tuning hyperparameters via grid search"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-78" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">KNeighborsClassifier</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">n_jobs</span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">args</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">[</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"jobs"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">]</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-79" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">GridSearchCV</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">params</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-80" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">start</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-81" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">fit</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">trainData</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">trainLabels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-82" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-83" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># evaluate the best grid searched model on the testing data</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-84" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] grid search took {:.2f} seconds"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-85" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">start</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-86" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">acc</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">score</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">testData</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">testLabels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-87" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] grid search accuracy: {:.2f}%"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">acc</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">100</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143655822923349-88" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] grid search best parameters: {}"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143655822923349-89" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">best_params_</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The primary benefit of the Grid Search algorithm is also it's major drawback: as an <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">exhaustive search</em> your number of possible parameter values <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">explodes</em> as both the number of <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">hyperparameters and hyperparameter values</em> increases.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Sure, you get to evaluate each and every combination of hyperparameter — <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">but you pay a cost </strong>— it's a <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">very</em> time consuming cost. And in most cases, <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">it's hardly worth it.</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As I explain in the <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">"Use Randomized Search for hyperparameter tuning (in most situations)"</em>section below, there are <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">rarely</em> just <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">one</em> set of hyperparameters that obtain the highest accuracy.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Instead, there are "hot zones" of hyperparameters that all obtain near identical accuracy. The goal is to explore as many of these "zones" of hyperparameters a quickly as possible and locate one of these "hot zones". It turns out that a random search is a great way to do this.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Randomized Search hyperparameters</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">The Random Search approach to hyperparameter tuning will <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">sample</em> hyperparameters from our <span id="gmail-crayon-5bf8a5514365e448831283" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">params</span></span></span> dictionary via a <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">random, uniform distribution. </strong>Given a set of randomly sampled parameters, a model is then trained and evaluated.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">We perform this set of random hyperparameter sampling and model construction/evaluation for a <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">preset number of times. </em>You set the number of evaluations to be <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">as long as you're willing to wait</strong>. If you're impatient and in a hurry, make this value low. And if you have the time to spend on a longer experiment, increase the number of iterations.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In either case, the goal of a Randomized Search is to explore a large set of possible hyperparameter spaces quickly — and the best way to accomplish this is via simple random sampling. <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">And in practice, it works quite well!</strong></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">You can find the code to perform a Randomized Search of hyperparameters for the k-NN algorithm below:</p><div id="gmail-crayon-5bf8a55143663214391392" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Python</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:214px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">91</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">92</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">93</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">94</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">95</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">96</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">97</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">98</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">99</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">100</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">101</div><div class="gmail-crayon-num gmail-crayon-striped-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;text-align:center;height:inherit;font-size:inherit;background:rgb(200,225,250);line-height:inherit;font-weight:inherit;color:rgb(49,124,197)">102</div><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">103</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:588px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-91" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># tune the hyperparameters via a randomized search</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143663214391392-92" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">RandomizedSearchCV</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">model</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">params</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-93" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">start</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143663214391392-94" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">fit</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">trainData</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">trainLabels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-95" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"> </div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143663214391392-96" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># evaluate the best randomized searched model on the testing</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-97" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-c" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(255,128,0)"># data</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143663214391392-98" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] randomized search took {:.2f} seconds"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-99" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">time</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">-</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">start</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143663214391392-100" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">acc</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">=</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">score</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">testData</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">,</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">testLabels</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-101" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] grid search accuracy: {:.2f}%"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">acc</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">*</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-cn" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(206,0,0)">100</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div><div class="gmail-crayon-line gmail-crayon-striped-line" id="gmail-crayon-5bf8a55143663214391392-102" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;font-family:inherit;height:inherit;font-size:inherit;background:rgb(247,247,247);line-height:inherit;font-weight:inherit"><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">print</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span><span class="gmail-crayon-s" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,128,0)">"[INFO] randomized search best parameters: {}"</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-k" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(128,0,128)">format</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">(</span></div><div class="gmail-crayon-line" id="gmail-crayon-5bf8a55143663214391392-103" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">grid</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">best_params_</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">)</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"></p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Hyperparameter tuning with Python and scikit-learn results</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">To tune the hyperparameters of our k-NN algorithm, make sure you:</p><ol style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">Download the source code to this tutorial using the <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">"Downloads"</em></strong> form at the bottom of this post.</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">Head over to the <a href="https://www.kaggle.com/c/dogs-vs-cats/data" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">Kaggle Dogs vs. Cats competition page</a> and download the dataset.</li></ol><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">From there, you can execute the following command to tune the hyperparameters:</p><div id="gmail-crayon-5bf8a5514366c668113245" class="gmail-crayon-syntax gmail-crayon-theme-classic gmail-crayon-font-monaco gmail-crayon-os-pc gmail-print-yes gmail-notranslate" style="margin:12px 0px;padding:0px;border:1px solid rgb(153,153,153);outline:0px;vertical-align:baseline;box-sizing:border-box;width:622.938px;font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(85,85,85);height:auto;font-size:12px;background:rgb(253,253,253);overflow:hidden;direction:ltr;line-height:15px"><div class="gmail-crayon-toolbar" style="margin:0px;padding:0px;border-width:0px 0px 1px;border-top-style:initial;border-top-color:initial;border-right-style:initial;border-right-color:initial;border-left-style:initial;border-left-color:initial;outline:0px;vertical-align:baseline;width:620.938px;overflow:hidden;border-bottom-style:solid;border-bottom-color:rgb(187,187,187);background:rgb(221,221,221);height:18px;line-height:18px"><span class="gmail-crayon-title" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">How to tune hyperparameters with Python and scikit-learn</span><div class="gmail-crayon-tools" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:18px;line-height:18px;font-weight:inherit;float:right"><div class="gmail-crayon-button gmail-crayon-nums-button gmail-crayon-pressed" title="Toggle Line Numbers" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:-24px 0px no-repeat rgb(188,188,188);font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;color:rgb(255,255,255);font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") -24px -32px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-plain-button" title="Toggle Plain Code" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -48px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-wrap-button" title="Toggle Line Wrap" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -112px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-copy-button" title="Copy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px -16px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><div class="gmail-crayon-button gmail-crayon-popup-button" title="Open Code In New Window" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background-image:initial;background-position:0px 50%;background-size:initial;background-repeat:no-repeat;background-origin:initial;background-clip:initial;font-family:inherit;height:inherit;line-height:15px;display:inline;width:24px;font-size:inherit;font-weight:inherit;float:left"><div class="gmail-crayon-button-icon" style="padding:0px;border:0px;outline:0px;vertical-align:baseline;background:url("/wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/buttons.png") 0px 0px;font-family:inherit;width:24px;font-size:inherit;height:16px;line-height:inherit;font-weight:inherit"></div></div><span class="gmail-crayon-language" style="margin:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;float:left;height:inherit;padding:0px 8px 0px 4px;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(153,153,153)">Shell</span></div></div><div class="gmail-crayon-plain-wrap" style="border:0px;outline:0px;vertical-align:baseline;background:0px 50%;margin:0px;padding:0px;height:auto"><textarea class="gmail-crayon-plain gmail-print-no" readonly style="padding:0px 5px;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;border-width:0px;border-style:initial;border-color:initial;border-radius:0px;color:rgb(0,0,0);width:620.938px;overflow:hidden;height:34px;opacity:0;box-sizing:border-box;white-space:pre;font-size:12px;font-family:Monaco,MonacoRegular,"Courier New",monospace;line-height:15px"></textarea></div><div class="gmail-crayon-main" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;width:620.938px;overflow:hidden"><table class="gmail-crayon-table" style="margin:0px;outline:0px;vertical-align:baseline;border-radius:4px;padding:0px;border:none;background:none;border-collapse:collapse;border-spacing:0px;width:auto;table-layout:auto"><tbody style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent"><tr class="gmail-crayon-row" style="outline:0px;background:0px 50%;margin:0px;padding:0px;border:none;vertical-align:top"><td class="gmail-crayon-nums" style="border:0px;outline:0px;border-bottom-left-radius:4px;border-top-right-radius:0px;border-bottom-right-radius:0px;padding:0px;vertical-align:top;background:rgb(223,239,255);font-family:Monaco,MonacoRegular,"Courier New",monospace;color:rgb(84,153,222)"><div class="gmail-crayon-nums-content" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;white-space:nowrap;line-height:15px"><div class="gmail-crayon-num" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;text-align:center;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit">1</div></div></td><td class="gmail-crayon-code" style="border:0px;outline:0px;background:0px 50%;width:602px;border-bottom-right-radius:4px;border-top-left-radius:0px;border-bottom-left-radius:0px;padding:0px;vertical-align:top;font-family:Monaco,MonacoRegular,"Courier New",monospace"><div class="gmail-crayon-pre" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;color:rgb(0,0,0);white-space:pre;overflow:visible;border:none;background:none;line-height:15px"><div class="gmail-crayon-line" id="gmail-crayon-5bf8a5514366c668113245-1" style="margin:0px;padding:0px 5px;border:0px;outline:0px;vertical-align:baseline;background:0px 50%;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit"><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">$</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">python </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">knn_tune</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">.py</span><span class="gmail-crayon-h" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)"> </span><span class="gmail-crayon-o" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,111,224)">--</span><span class="gmail-crayon-e" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,78,208)">dataset </span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">kaggle_dogs_vs_cats</span></div></div></td></tr></tbody></table></div></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">You'll probably want to go for a nice walk and stretch your legs will the <span id="gmail-crayon-5bf8a55143670891102771" class="gmail-crayon-syntax gmail-crayon-syntax-inline gmail-crayon-theme-classic gmail-crayon-theme-classic-inline gmail-crayon-font-monaco" style="margin:0px 2px;padding:0px 2px;border:1px solid rgb(221,221,221);outline:0px;vertical-align:baseline;box-sizing:border-box;width:100%;font-family:Monaco,MonacoRegular,"Courier New",monospace;font-size:12px;background:rgb(250,250,250);overflow:hidden;direction:ltr;line-height:15px"><span class="gmail-crayon-pre gmail-crayon-code" style="margin:0px;padding:0px;outline:0px;vertical-align:baseline;width:100%;color:rgb(0,0,0);overflow:visible;border:none;background:none;line-height:15px"><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">knn_tune</span><span class="gmail-crayon-sy" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(51,51,51)">.</span><span class="gmail-crayon-v" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;font-family:inherit;height:inherit;font-size:inherit;line-height:inherit;font-weight:inherit;color:rgb(0,45,122)">py</span></span></span> script executes.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">On my machine, it took <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">19m 26s</strong> to complete, with over 86% of this time spent Grid Searching:</p><div id="gmail-attachment_4251" class="gmail-wp-caption gmail-aligncenter" style="margin:0px auto 15px;padding:1px;border:1px solid rgb(230,230,230);outline:0px;font-size:15px;vertical-align:baseline;background:rgb(248,248,248);text-align:center;max-width:610px;width:610px;border-radius:3px;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><img class="gmail-wp-image-4251" src="https://www.pyimagesearch.com/wp-content/uploads/2016/08/tune_hyperparams_results.jpg" alt="Figure 2: Applying a Grid Search and Randomized to tune machine learning hyperparameters using Python and scikit-learn." width="600" height="457" style="padding: 4px 0px; border: 0px; outline: 0px; vertical-align: bottom; background: none; max-width: 100%; height: auto; margin: 0px;"><p class="gmail-wp-caption-text" style="margin:0px 0px 0.3em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:12px;line-height:1.5em;vertical-align:baseline;background:transparent"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">Figure 2:</strong> Applying a Grid Search and Randomized to tune machine learning hyperparameters using Python and scikit-learn.</p></div><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As you can see from the output screenshot, the Grid Search method found that <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">k=25</em>and <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">metric='cityblock'</em> obtained the highest accuracy of 64.03%. <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">However, this Grid Search took 13 minutes.</strong></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">On the other hand, the Randomized Search obtained an identical accuracy of 64.03% — <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">and it completed in <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">under 5 minutes.</em></strong></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Both of these hyperparameter tuning methods improved our classification accuracy (64.03% accuracy, up from 57.58% <a href="https://www.pyimagesearch.com/2016/08/08/k-nn-classifier-for-image-classification/" target="_blank" style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;color:rgb(66,139,202);text-decoration-line:none">from last week's post</a>) — but the Randomized Search was <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">much</em>more efficient.</p><h3 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:20px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Use Randomized Search for hyperparameter tuning (in most situations)</h3><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Unless your search space is small and can easily be enumerated, a Randomized Search will tend to be more efficient and yield <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">better results faster.</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As our experiments demonstrated, Randomized Search was able to obtain <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">64.03% accuracy in < 5 minutes</strong> while an exhaustive Grid Search took a much longer <strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">13 minutes to obtain an identical 64.03% accuracy </strong>— that's a 202% increase in evaluation time for identical accuracy!</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In general, there isn't just <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">one</em> set of hyperparameters that obtains optimal results — instead, there are usually a <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">set</em> of them that exist towards the bottom of a concave bowl (i.e., the optimization surface).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">As long as you hit just <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">one</em> of these parameters towards the bottom of the bowl, you'll still obtain the same accuracy as if you enumerated <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">all possibilities</em> along the bowl. Furthermore, you'll be able to explore various regions of this bowl <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">faster</em> by applying a Randomized Search.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Overall, this will lead to faster, more efficient hyperparameter tunings in most situations.</p><h2 style="margin:0px 0px 0.5em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:24px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial">Summary</h2><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">In today's blog post, I demonstrated how to tune hyperparameters to machine learning algorithms using the Python programming language and the scikit-learn library.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">First, I defined, the difference between standard "model parameters" and the "hyperparameters" that need to be tuned.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">From there, we applied two methods to tune hyperparameters:</p><ol style="margin:0px 0px 15px;padding:0px 0px 0px 30px;border:0px;outline:0px;font-size:15px;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;list-style:none;color:rgb(85,85,85);font-family:"Helvetica Neue",Helvetica,sans-serif"><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">An exhaustive Grid Search</li><li style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent;list-style-type:decimal">A Randomized Search</li></ol><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Both of these hyperparameter tuning routines were then applied to the k-NN algorithm and the Kaggle Dogs vs. Cats dataset.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Each respective tuning algorithm obtained identical accuracy — <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">but the Randomized Search was able to obtain this increase of accuracy in a fraction of the time!</em></p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">In general, I <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">highly encourage</em> you to use Randomized Search when tuning hyperparameters.</strong> You'll often find that there is rarely just <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">one</em> set of hyperparameters that obtains optimal accuracy. Instead, there are "hot zones" of hyperparameters that will obtain near-identical accuracy — the goal is to explore as many zones and try to land on one of these zones as fast as possible.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Given no <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">a priori</em> knowledge of good hyperparameter choices, a Randomized Search to hyperparameter tuning is the most optimal way to find reasonable hyperparameter values in a short amount of time as it allows you to explore many areas of the optimization surface.</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)">Anyway, I hope you enjoyed this blog post! I'll be back next week to discuss the basics of linear classification (and the role it plays in Neural Networks and image classification).</p><p style="margin:0px 0px 1.2em;padding:0px;border:0px;outline:0px;font-variant-numeric:normal;font-variant-east-asian:normal;font-stretch:normal;font-size:15px;line-height:1.5em;font-family:"Helvetica Neue",Helvetica,sans-serif;vertical-align:baseline;background-image:initial;background-position:initial;background-size:initial;background-repeat:initial;background-origin:initial;background-clip:initial;color:rgb(85,85,85)"><strong style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">But before you go, <em style="margin:0px;padding:0px;border:0px;outline:0px;vertical-align:baseline;background:transparent">be sure to signup for the PyImageSearch Newsletter using the form below to be notified when future blog posts are published!</em></strong></p></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-60201703727674555542018-11-24T09:03:00.000+09:002018-11-24T09:05:11.572+09:00物体検出におけるNon-Maximum Suppressionのアルゴリズム<div dir="ltr"><div dir="ltr"><a href="https://meideru.com/archives/3538">https://meideru.com/archives/3538</a><br></div><div dir="ltr"><br></div><div dir="ltr"><h2 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:60px 0px 30px;padding:12px;background:rgb(8,138,8);color:rgb(255,255,255);font-size:25px;line-height:33px"><span id="gmail-R-CNN" style="margin:0px;padding:0px">R-CNNについて</span></h2><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">R-CNNについては<a href="http://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf" target="_blank" rel="noopener noreferrer" style="margin:0px;padding:0px;background:transparent;color:rgb(70,130,180);text-decoration-line:none">公式の論文</a>を読むことをオススメします。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">この場では説明しません(~_~;)</p><h2 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:60px 0px 30px;padding:12px;background:rgb(8,138,8);color:rgb(255,255,255);font-size:25px;line-height:33px"><span id="gmail-Non-Maximum_Suppression" style="margin:0px;padding:0px">Non-Maximum Suppressionについて</span></h2><h3 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:40px 0px 25px;padding:8px 0px 8px 5px;font-size:24px;color:rgb(26,26,26);line-height:25px;border-left:6px solid rgb(11,97,11);border-bottom:1px dotted rgb(243,243,243)"><span id="gmail-i" style="margin:0px;padding:0px">論文に登場</span></h3><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">Non-Maximum Suprressionは、R-CNNの公式の論文にこう記されています。</p><blockquote style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:20px auto;padding:70px 20px 20px;background-color:rgb(243,243,243);background-image:url("images/quote.png");background-repeat:no-repeat;background-position:0% 0%;border-left:1px solid rgb(204,204,204);color:rgb(0,0,0);font-size:medium"><div class="gmail-page" title="Page 3" style="margin:0px;padding:0px"><div class="gmail-layoutArea" style="margin:0px;padding:0px"><div class="gmail-column" style="margin:0px;padding:0px"><p style="margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px">Given all scored regions in an image, we apply a greedy non-maximum suppression (for each class independently) that rejects a region if it has an intersection-over-union (IoU) overlap with a higher scoring selected region larger than a learned threshold.</p></div></div></div><p style="margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px">画像の全ての候補領域に得点が付けられている場合、ある領域に、より高い得点で選択され、学習された閾値より大きな値を持つ領域とのIoU値が重複した場合、その領域を排除する<strong style="margin:0px;padding:0px">non-maximum suppression</strong>を(各々クラスに対して独立して)適用する。</p><div class="gmail-page" title="Page 3" style="margin:0px;padding:0px"><div class="gmail-layoutArea" style="margin:0px;padding:0px"><div class="gmail-column" style="margin:0px;padding:0px"><p style="margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px">(出典:<a href="http://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf" target="_blank" rel="noopener noreferrer" style="margin:0px;padding:0px;background:transparent;color:rgb(70,130,180);text-decoration-line:none">http://www.cv-foundation.org/openaccess/content_cvpr_2014/papers/Girshick_Rich_Feature_Hierarchies_2014_CVPR_paper.pdf</a>)</p></div></div></div></blockquote><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">下手くそな翻訳ですが、直訳すると上のような意味になります。</p><h3 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:40px 0px 25px;padding:8px 0px 8px 5px;font-size:24px;color:rgb(26,26,26);line-height:25px;border-left:6px solid rgb(11,97,11);border-bottom:1px dotted rgb(243,243,243)"><span id="gmail-Non-Maximum_Suppression-2" style="margin:0px;padding:0px">Non-Maximum Suppressionとは何なのか</span></h3><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong class="gmail-marker-blue" style="margin:0px;padding:0px;background:linear-gradient(transparent 70%,rgb(166,210,255) 0%)">一言で説明すると、Non-Maximum Suppressionとは、同じクラスとして認識された重なっている状態の領域を抑制するためのアルゴリズムです。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">以下で画像を交えながら説明します。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">例えば、スティーブ・ジョブズの顔をR-CNNで検出しようと考えます。(余談ですが彼は私が最も尊敬する人物です。)</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3569 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_1.jpg" alt="Non-Maximum Suppression" width="660" height="439" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">良い笑顔です(笑</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">R-CNNでは以下の手順で検出を行います。</p><ol style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 10px;padding:0px 20px 10px 30px;color:rgb(0,0,0);font-size:medium"><li style="margin:0px;padding:0px;font-size:17px;line-height:28px">Selective Searchを用いて候補領域を切り出す。</li><li style="margin:0px;padding:0px;font-size:17px;line-height:28px">ニューラルネットワークを用いて、候補領域から特徴ベクトルを抽出する。</li><li style="margin:0px;padding:0px;font-size:17px;line-height:28px">サポートベクトルマシン(通称:SVM)を用いて、特徴ベクトルから顔かどうか判断する。</li><li style="margin:0px;padding:0px;font-size:17px;line-height:28px">Non-Maximum Suppressionを用いて、重複している領域を抑制する。</li></ol><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">このプロセスを経て、最終的な顔の検出を行います。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">本来は4番のNon-Maximum Suppressionの処理まで行うのですが、以下の画像では3番まで処理を行った結果を示しています。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3568 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_3.jpg" alt="Non-Maximum Suppression" width="660" height="439" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">Non-Maximum Suppressionを適用しない場合、同じ顔が複数検出されてしまいす。これではダメですよね。<br style="margin:0px;padding:0px">上手くやって1つとして検出したいところです。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong class="gmail-marker-blue" style="margin:0px;padding:0px;background:linear-gradient(transparent 70%,rgb(166,210,255) 0%)">これができるのが Non-Maximum Suppression なのです!</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">Non-Maximum Suppressionを適用すると、以下の画像のように顔を1つとして検出することができます。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3567 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_2.jpg" alt="Non-Maximum Suppression" width="660" height="439" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">これが望んでいる結果ですよね。</p><h3 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:40px 0px 25px;padding:8px 0px 8px 5px;font-size:24px;color:rgb(26,26,26);line-height:25px;border-left:6px solid rgb(11,97,11);border-bottom:1px dotted rgb(243,243,243)"><span id="gmail-i-2" style="margin:0px;padding:0px">アルゴリズムについて</span></h3><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">Non-Maximum Suppressionを説明する前に説明しなければいけないことがあります。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">それは、<strong style="margin:0px;padding:0px">IoU値</strong>です。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong class="gmail-marker-blue" style="margin:0px;padding:0px;background:linear-gradient(transparent 70%,rgb(166,210,255) 0%)">IoUとは、Intersection over Unionの略です。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">"百聞は一見にしかず"ということわざがある通り、以下の画像を見ていただければ一発で理解できると思います。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3563 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/iou_value_1.png" alt="IoU値" width="600" height="468" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong class="gmail-marker-blue" style="margin:0px;padding:0px;background:linear-gradient(transparent 70%,rgb(166,210,255) 0%)">IoU値とは、画像の重なりの割合を表す値です。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">IoU値が大きいほど、画像が重なっている状態ということになります。<br style="margin:0px;padding:0px">IoU値が小さいほど、画像が重なっていない状態ということになります。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">IoU値=0のとき、画像は全く重なっていない状態ということになります。<br style="margin:0px;padding:0px">IoU値=0.5のとき、画像は半分重なっている状態ということになります。<br style="margin:0px;padding:0px">IoU値=1.0のとき、画像は完全に重なっている状態ということになります。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">さて、本テーマであるNon-Maximum Suppressionの話に戻ります。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">重複している領域は、上で説明したIoU値を用いて行います。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3568 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_3.jpg" alt="Non-Maximum Suppression" width="660" height="439" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">例えば、右下の領域を基準として、IoU値の閾値を0.3とします。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">右下の領域と他の2枚の領域のIoU値は、閾値よりも大きいのは明らかですよね?(重なりが多いことを意味しています。)</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">なので、他の2枚の領域は抑制(suppression)します。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">すると、以下のようになります。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3567 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_2.jpg" alt="Non-Maximum Suppression" width="660" height="439" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">見事、領域が1つになりました!!</strong><br style="margin:0px;padding:0px"><strong style="margin:0px;padding:0px">これこそが望む結果です!!</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">逆に、IoU値が閾値よりも低い領域は抑制せずに残しておくというわけです。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">話をまとめます。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">Non-Maximum Suppressionというのは難しいことをしているわけではありません。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">ただ単に、重なりの大きい領域を抑制(削除)しているだけにすぎません。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">抑制のためにIoU値という領域の重複具合を示す値を用いています。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">IoU値が大きければ、領域の重なりが大きいとみなして一方の領域を抑制(削除)します。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">逆に、IoU値が小さければ、領域の重なりが小さいとみなして両方の領域をそのままにしておきます。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">ただ、これだけのことです。</p><h3 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:40px 0px 25px;padding:8px 0px 8px 5px;font-size:24px;color:rgb(26,26,26);line-height:25px;border-left:6px solid rgb(11,97,11);border-bottom:1px dotted rgb(243,243,243)"><span id="gmail-i-3" style="margin:0px;padding:0px">このアルゴリズムを使うと何が良いのか?</span></h3><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">最後に、このアルゴリズムの何が良いのかを考えてみましょう。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">そのために、考えてもらいたいことがあります。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">逆に、Non-Maximum Suppressionを使わないとすると、どのようにして領域を絞れば良いでしょうか?</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">パッと考えて思いつくのは、以下の画像の青枠のように、重なっている全ての領域を囲うことです。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3566 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_4.jpg" alt="Non-Maximum Suppression" width="660" height="439" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">(とりあえず、赤枠も残していますが、本番では消します。)</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong class="gmail-marker-yellow" style="margin:0px;padding:0px;background:linear-gradient(transparent 70%,rgb(255,242,160) 0%)">これならNon-Maximum Suprressionを使わなくても済むだろうと思ったあなた、甘いです!!w</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">これだと上手くいかない場合があるのです。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">上手くいかない場合とは、以下のような場合です。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">例えば、丁度よく2台の自動車が検出されたとします。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3571 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_5.jpg" alt="Non-Maximum Suppression" width="645" height="354" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">上の自動車2台を、ただ単純に囲うとどうなるでしょうか?</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3570 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_6.jpg" alt="Non-Maximum Suppression" width="645" height="354" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">あら!?2台が1台として検出されてしまいましたね。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">そうです、これではダメなんです。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">ただ単純に囲うだけだと、2つ以上の同じ物体が近くにあると1つの物体として検出されてしまうのです。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">なぜこうなってしまうのかというと、領域の重複具合を考慮していないからです。</strong><br style="margin:0px;padding:0px"><strong style="margin:0px;padding:0px">そのためにNon-Maximum Suppressionでは、IoU値という数値を用いています。</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">Non-Maximum Suppressionを適用した場合、どうなるでしょうか?</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><img class="gmail-alignnone gmail-size-full gmail-wp-image-3571 gmail-lazy-loaded" src="https://meideru.com/wp-content/uploads/2017/05/non_maximum_suppression_5.jpg" alt="Non-Maximum Suppression" width="645" height="354" style="margin: 0px 0px 30px; padding: 0px; border: none; max-width: 100%; height: auto; vertical-align: bottom; display: block;"></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><strong style="margin:0px;padding:0px">当然、上手くいきます!</strong></p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">それぞれの領域とのIoU値は、閾値(例えば0.3)よりも明らかに小さいからです。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">そういう場合は、抑制されないのでしたね。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"> </p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">以上がNon-Maximum Suppressionです。</p><h2 style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:60px 0px 30px;padding:12px;background:rgb(8,138,8);color:rgb(255,255,255);font-size:25px;line-height:33px"><span id="gmail-i-4" style="margin:0px;padding:0px">サンプルのソースコード</span></h2><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">Non-Maximum Suppressionのサンプルコードは<a href="http://www.pyimagesearch.com/2014/11/17/non-maximum-suppression-object-detection-python/" target="_blank" rel="noopener noreferrer" style="margin:0px;padding:0px;background:transparent;color:rgb(70,130,180);text-decoration-line:none">こちらのブログ</a>にPythonで書かれたものが紹介されていました。</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)">ぜひ、参考にしてみてください!</p><p style="font-family:メイリオ,Meiryo,"\0030d2\0030e9\0030ae\0030ce\0089d2\0030b4 Pro W3","Hiragino Kaku Gothic Pro","\00ff2d\00ff33 \00ff30\0030b4\0030b7\0030c3\0030af",sans-serif;margin:0px 0px 20px;padding:0px;font-size:17px;line-height:28px;color:rgb(0,0,0)"><br></p></div></div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-72848857379707466542018-11-22T10:47:00.000+09:002018-11-22T10:48:06.031+09:00The Modern History of Object Recognition — Infographic<div class="WordSection1"> <p class="MsoPlainText"><span lang="EN-US"><a href="https://medium.com/@nikasa1889/the-modern-history-of-object-recognition-infographic-aea18517c318">https://medium.com/@nikasa1889/the-modern-history-of-object-recognition-infographic-aea18517c318</a><o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><a href="https://github.com/Nikasa1889/HistoryObjectRecognition">https://github.com/Nikasa1889/HistoryObjectRecognition</a><o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><a href="https://drive.google.com/file/d/0B9SNmZvpaGj1NnNsbWhTZUxYSlU/view">https://drive.google.com/file/d/0B9SNmZvpaGj1NnNsbWhTZUxYSlU/view</a><o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p> <p class="graf" style="mso-margin-top-alt:7.5pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white"> <span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">Object Recognition has recently become one of the most exciting fields in computer vision and AI. The ability of immediately recognizing all the objects in a scene seems to be no longer a secret of evolution. With the development of Convolutional Neural Network architectures, backed by big training data and advanced computing technology, a computer now can surpass human performance in object recognition task under some specific settings, such as face recognition.<o:p></o:p></span></p> <p class="graf" style="mso-margin-top-alt:21.75pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;--baseline-multiplier:0.17" name="b77a" id="b77a"> <span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">I fell like whenever such an amazing thing happens; someone must tell the story of it. That is why this infographic was born. Its mission is to tell the modern history of object recognition in the most concise and engaging way. The story began since AlexNet won the ILSVRC 2012 competition and still being written. The infographic consists of two pages, where the first page summarizes important concepts while the second page sketches up the history. Every illustration has been remade to be more consistent and understandable. All the references have been cherry-picked so that you always know where to look for detail explanation. With that said, it will be hard to completely understand all of the concepts just by reading the infographic without prior knowledge about the field. If you find any trouble at understanding some concepts, leave me a comment, and I will be happy to be your explainer.<o:p></o:p></span></p> <p class="graf" style="mso-margin-top-alt:21.75pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;--baseline-multiplier:0.17" name="2f3a" id="2f3a"> <em><span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">If the interest from the community is big enough, I can consider making a series of blog posts to go through and explain the whole infographic in detail.</span></em><span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:22.5pt;margin-right:0mm;margin-bottom:0mm;margin-left:42.0pt;margin-bottom:.0001pt;background:white;color:rgba(0, 0, 0, 0.84);--baseline-multiplier:0.22" name="589c" id="589c"> <span lang="EN-US" style="font-size:19.5pt;font-family:"Lucida Sans Unicode","sans-serif";letter-spacing:-.15pt">How to print and read:<o:p></o:p></span></h4> <p class="graf" style="mso-margin-top-alt:4.5pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;--baseline-multiplier:0.17" name="f3ed" id="f3ed"> <span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">For best view on screen, you should download the pdf file. I attached the png file here just because medium does not support pdf format. <strong><span style="font-family:"Georgia","serif"">The pdf file can be downloaded </span></strong><a href="https://drive.google.com/file/d/0B9SNmZvpaGj1NnNsbWhTZUxYSlU/view?usp=drivesdk" target="_blank"><strong><span style="font-family:"Georgia","serif";color:blue;text-decoration:none">here</span></strong></a><strong><span style="font-family:"Georgia","serif"">.</span></strong><o:p></o:p></span></p> <p class="graf" style="mso-margin-top-alt:21.75pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;--baseline-multiplier:0.17" name="ee2b" id="ee2b"> <span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">The infographic is read best when it is printed on A3 paper. Download the pdf file and choose auto-center and scale <strong><span style="font-family:"Georgia","serif"">130% when printing to A3 paper.</span></strong>You can still print it on A4 paper, although the text will be pretty small. You should set the printing scale to<strong><span style="font-family:"Georgia","serif""> 90% when printing to A4 paper.</span></strong><o:p></o:p></span></p> <p class="graf" style="mso-margin-top-alt:21.75pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;--baseline-multiplier:0.17" name="1670" id="1670"> <span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">The whole project is hosted <a href="https://github.com/Nikasa1889/HistoryObjectRecognition" target="_blank">here</a> on Github.<o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><i><span lang="EN-US" style="font-size:16.0pt;font-family:"Georgia","serif";letter-spacing:-.05pt">Note: If you want to know more about the <strong><span style="font-family:"Georgia","serif"">Receptive Field concept in CNNs</span></strong>,<a href="https://medium.com/@nikasa1889/a-guide-to-receptive-field-arithmetic-for-convolutional-neural-networks-e0f514068807" target="_blank">this post</a> is for you.<o:p></o:p></span></i></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-size:15.0pt;font-family:"Segoe UI","sans-serif""><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkuWTAmQ4eGrGgWyZ21jPFHwZNEUbB3B1I3JduI4k2TfQ-KcFzuCXSDzkIA9HdYR-DOQ6-IL0QZbniYtjkBfmvVuLwa0nqjTR-kq2A1BNt_RrHyOjKPdYTiIDmCExc0JN76iupf0KUVERt/s1600/image001-786057.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkuWTAmQ4eGrGgWyZ21jPFHwZNEUbB3B1I3JduI4k2TfQ-KcFzuCXSDzkIA9HdYR-DOQ6-IL0QZbniYtjkBfmvVuLwa0nqjTR-kq2A1BNt_RrHyOjKPdYTiIDmCExc0JN76iupf0KUVERt/s320/image001-786057.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6626495839246094962" /></a></span><span lang="EN-US" style="font-size:15.0pt;font-family:"Segoe UI","sans-serif""><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><strong><span lang="EN-US" style="font-size:15.0pt;font-family:"Segoe UI","sans-serif"">The pdf file can be downloaded </span></strong><span lang="EN-US" style="font-size:15.0pt;font-family:"Segoe UI","sans-serif""><a href="https://drive.google.com/file/d/0B9SNmZvpaGj1NnNsbWhTZUxYSlU/view?usp=drivesdk" target="_blank"><strong><span style="font-family:"Segoe UI","sans-serif";color:blue;text-decoration:none">here</span></strong></a><strong><span style="font-family:"Segoe UI","sans-serif"">.</span></strong><o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-16979945734781028712018-11-21T12:36:00.001+09:002018-11-21T12:36:40.006+09:001.7兆ドルの偽造品に効果があるか、ブロックチェーン技術 IBMとSeagate Technology(Seagate)は2018年11月8日(米国時間)、ブロックチェーンとセキュリティ技術を使用して、HDDの偽造防止などに共同で取り組むと発表した。今回の提携では、メーカーとインテグレーター、ビジネスパートナーが進めるHDDの偽造対策の支援も目指している。「IBM Blockchain Platform」を使ってHDD製品の出どころを認証し、新たなレベルの多層セキュリティ保護をデータ管理産業にもたらすとしている。
<br>
<br> 提携の背景には被害の規模がある。国際模倣対策連合(IACC)によると、電子製品の模倣品や海賊版の国際取引額は1.7兆ドル以上に相当する。
<br>
<br> そこで、Seagateは製品の真正性を確保するため、まず製造時点で「IBM Cloud」上のIBM Blockchain Platformを、「Seagate Secure Electronic ID(eID)」に基づく製品認証データで更新する。これにより、個々の製品のライフサイクル全体を通じて、電子指紋の役割を果たす固有の識別子を使って製品の真正性を確認できるようになる。
<br>
<br> HDDを廃棄するときなどには、内蔵データを確実に消去する必要がある。ここでもブロックチェーン技術を用いる。Seagateの「Certified Erase」を利用して削除すると、Cryptographic Erasure技術によって、消去したことを証明するデジタル証明書を生成。「Seagate Secure PKI」を用いて電子的に署名後、コンプライアンス管理のためにブロックチェーンに保存する。
<br>
<br> Seagate Secure技術は、eIDとCertified Eraseの両方の基盤であり、製品の真正性とデータ消去証明に関する高度な信頼性を実現するという。顧客は、HDDがSeagateの純正品であり、HDD上のデータが安全に消去できたことが分かり、恩恵を受ける。
<br>
<br> IBM Blockchain Platformは、Linux Foundationの分散台帳フレームワーク「Hyperledger Fabric」をベースに、IBMのブロックチェーンノウハウを用いて構築されたもの。ネットワーク参加者がパーミッションレベルに応じて、ブロックチェーンデータを付加、表示できるように設計されている。
<br>
<br> そのため、製品のライフサイクルを通じて技術ベンダーやサービスプロバイダー、エンドユーザーが、ブロックチェーンで製品の真正性をIDの形で確認できる。これによってデータ損失、不正な製品、保証コストが減少し、顧客への製品保証が向上する。
<br>
<br> SeagateとIBMは、世界規模で製品の偽造防止に共同で取り組む今回のプロジェクトが進むとともに、サプライチェーンパートナーの参加を得て、ビジネスネットワークが拡大することを期待している。hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-71612310917281181902018-11-21T12:34:00.001+09:002018-11-21T12:34:21.462+09:00AIでリアルタイムに売上を予測 待ち時間の短縮や来店客の急増にも対応——サイゼリヤとNTTドコモが実証実験へ サイゼリヤとNTTドコモは2018年11月19日、サイゼリヤの都内数店舗でAIによる「リアルタイム売上予測」の実証実験を実施すると発表した。予測結果を活用した店舗オペレーションの効率化を目指す。実証期間は、2018年11月30日から2019年3月31日までを予定している。
<br>
<br> サイゼリヤでは、効率的で質の高い店舗運営には来店客数の予測が不可欠と考え、来店客数の予測を基に従業員のシフトを決めている。来店客数の予測は、過去の実績などから各店の店長が行っているが、精度にバラつきがあることから、予測精度の標準化と精度向上が課題だったという。
<br>
<br> 実証実験では、NTTグループのAI技術「corevo」を活用して、サイゼリヤ各店舗の過去3年間の売上実績データに、天候などの外部情報とNTTドコモの携帯電話ネットワークを利用した人口統計データのリアルタイム版である「近未来人数予測」を掛け合わせ、売上との関係性を分析して、売上金額を予測する。
<br>
<br> 予測は、分析時点から「1時間〜数時間後」「翌日」「数週間後」の単位で行い、それぞれ1時間ごとの売上金額として予測結果を出力する。
<br>
<br> 特に1時間〜数時間後の売上予測は、ほぼリアルタイムに人の動きを推計する人口統計データが反映されているため、天候の変化や店舗近隣でのイベント開催などの影響による突発的な来店需要の変動についても、的確に予測できるという。
<br>
<br> 予測結果は、翌日や数週間後の店舗従業員のシフト管理に活用する。
<br>
<br> また、1時間ごとの直近売上予測を店舗に配備したタブレットに配信し、直近売上予測値が数週間前に予測された値より一定以上上回った場合は、タブレットの通知音を鳴動する。これにより、来店客の急増を店舗従業員に通知して事前準備を促し、来店客の待ち時間の短縮や機会損失の低減を図るなど、サービス品質の向上や従業員の負担軽減といった店舗オペレーションの改善を目指す。
<br>
<br> 今回の実証実験に先立ち、サイゼリヤの都内6店舗の売上実績について、サイゼリヤの従来手法による売上予測との誤差、およびリアルタイム売上予測技術による売上予測との誤差を比較したところ、特に売上が平常時よりも伸びた時間帯の予測で、リアルタイム売上予測技術の方が誤差が25%小さい結果になったという。
<br>
<br> NTTドコモでは、実証実験を通して、リアルタイム売上予測の予測精度の向上を目指した技術検証などを行い、将来的には、さまざまな業種の店舗オペレーションの効率化につながるサービスとして実用化を目指すとしている。hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-4441761039533834622018-11-21T12:27:00.000+09:002018-11-21T12:29:44.355+09:00「統計学と機械学習の違い」はどう論じたら良いのか<div class="WordSection1"> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000">https://tjo.hatenablog.com/entry/2015/09/17/190000</a><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">これを読んで</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://b.hatena.ne.jp/entry/japan.zdnet.com/article/35070566/"><span lang="EN-US" style="font-family:"MS Pゴシック";color:#A86F79;text-decoration:none"><span lang="EN-US">色々な人がツッコミを入れまくっている</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">模様ですが、この記事の不思議なところは<b>「完全に間違った説明というわけでもないのに何故か(両分野に詳しい)誰が読んでも猛烈な違和感を覚える」</b>ところなんじゃないかなぁと。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">正直、これはライター・インタビュアー・コメンテーター・編集者の誰のせいなのかは全く分からないんですが、ツッコミ入れられまくっている内容について色々あげつらってもあまり建設的でないので、ここでは記事中で本題として取り上げられている「</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の違い」についてちょっとコメントしてみようと思います。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">あ、もちろん僕がこれから書くコメントも別に正しいとは全く限らないので、おかしいところや間違ってるところがあったらバンバン突っ込んでいただければ幸いです</span><a name="fn-65bfae5b"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-65bfae5b" title="いつも通りの炎上ラーニング"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*1</span></a><span style="font-size:10.5pt;color:#3D3D3D">。そしてガチ勢向けのコメントでもないので何卒悪しからず。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> <br> <o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:dotted #999999 1.0pt;padding:0mm 0mm 0mm 0mm;background:white;margin-left:42.0pt;margin-right:0mm"> <h3 style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:6.0pt;margin-left:0mm;background:white;border:none;padding:0mm"> <span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:14.5pt;color:#3D3D3D">はデータを「説明」することにより重きを置く</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></h3> </div> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> </span><span style="font-size:10.5pt;color:#3D3D3D">昨年出版した拙著でも</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">的な分析の代表例として「検定」</span><a name="fn-c14d5b2a"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-c14d5b2a" title="3章"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*2</span></a><span style="font-size:10.5pt;color:#3D3D3D">「回帰によるパラメータ推定」</span><a name="fn-5fe48fdf"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-5fe48fdf" title="4章"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*3</span></a><span style="font-size:10.5pt;color:#3D3D3D">を取り上げたわけですが、一般に</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">はそのデータがどういうものであるかを「説明」することに重きを置くものだと僕は理解しています。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">即ち「検定」であれば、例えば平均値の差に関する</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">t</span><span style="font-size:10.5pt;color:#3D3D3D">検定であれば</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">A</span><span style="font-size:10.5pt;color:#3D3D3D">群</span><a name="fn-a35a8da4"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-a35a8da4" title="例えばDB基盤Aの何かしらのレイテンシ"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*4</span></a><span style="font-size:10.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">B</span><span style="font-size:10.5pt;color:#3D3D3D">群</span><a name="fn-64b9b62f"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-64b9b62f" title="DB基盤Bのレイテンシ"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*5</span></a><span style="font-size:10.5pt;color:#3D3D3D">との差があるかどうかを「説明」することになるし、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">ANOVA</span><span style="font-size:10.5pt;color:#3D3D3D">であれば群をまたいで実験条件間</span><a name="fn-ab59504b"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-ab59504b" title="例えばユーザーグループA, B, C, D, Eそれぞれにスマホ広告1, 2, 3, 4, 5を表示し分けるとか"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*6</span></a><span style="font-size:10.5pt;color:#3D3D3D">での差があるかどうかを「説明」することになります。他の例えば</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AB%A5%A4%C6%F3%BE%E8%B8%A1%C4%EA"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">カイ二乗検定</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">にせよ、順位和検定にせよ、やはり何かしらを「説明」する手法です。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">そして重回帰分析(正規線形モデル)を含む線形モデル族ではモデル推定の結果として偏回帰係数(パラメータ)が求まるわけですが、それらのパラメータは個々の説明変数</span><a name="fn-21832525"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-21832525" title="例えば広告企画a, b, c, d..."><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*7</span></a><span style="font-size:10.5pt;color:#3D3D3D">にどれくらいの目的変数</span><a name="fn-b0738f29"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-b0738f29" title="CV数or売上高など"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*8</span></a><span style="font-size:10.5pt;color:#3D3D3D">への影響度があるか</span><a name="fn-3b41bf85"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-3b41bf85" title="「弾性率」みたいな捉え方をされることもありますね"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*9</span></a><span style="font-size:10.5pt;color:#3D3D3D">を「説明」するものでもあります。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjykl7yJV4CUq7XvZCSWl2U9uEDjbGTWqLL_veu7_iqy-2rnKeiBanxlI9hUVbkzkSxo6RyZs0n2_ql5Sn5_1MpO2_7o9FwBA4xTlRbL5NyBHpZud6DoVgSlwJ5k1JnuW_xOpLHhx_ofBB3/s1600/image001-784384.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjykl7yJV4CUq7XvZCSWl2U9uEDjbGTWqLL_veu7_iqy-2rnKeiBanxlI9hUVbkzkSxo6RyZs0n2_ql5Sn5_1MpO2_7o9FwBA4xTlRbL5NyBHpZud6DoVgSlwJ5k1JnuW_xOpLHhx_ofBB3/s320/image001-784384.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6626150942638282242" /></a></span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">なればこそ、例えば線形モデル族では偏回帰係数が</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%CD%AD%B0%D5"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">有意</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">に</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">0</span><span style="font-size:10.5pt;color:#3D3D3D">から離れた正負いずれかの値を取るか否かがよく論じられるわけです。要は上の図に出てくる個々の</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">β</span><span style="font-size:10.5pt;color:#3D3D3D">の大小が重要ということで。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">一方、線形モデル族では「目的変数+説明変数」の組み合わせでデータを扱うことから、特に説明変数が外生変数</span><a name="fn-c8e919c8"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-c8e919c8" title="広告出稿数、広告予算など当事者の側が操作可能な変数"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*10</span></a><span style="font-size:10.5pt;color:#3D3D3D">であれば純粋な「予測」も可能なわけですが、意外にも</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の教科書はあまり予測について取り上げていないことが珍しくなく、例えば</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%EC%C2%E7%BD%D0%C8%C7%B2%F1"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">東大出版会</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の定番</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C0%C4%CB%DC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">青本</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">(</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/asin/4130420674/hatena-blog-22"><span lang="EN-US" style="font-family:"MS Pゴシック";color:#A86F79;text-decoration:none"><span lang="EN-US">自然科学の統計学</span></span><span style="color:#A86F79;text-decoration:none"> (</span><span lang="EN-US" style="font-family:"MS Pゴシック";color:#A86F79;text-decoration:none"><span lang="EN-US">基礎統計学</span></span><span style="color:#A86F79;text-decoration:none">)</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">)では一言も予測については触れておらず、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%CE%D0%CB%DC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">緑本</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">(</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/asin/4130420666/hatena-blog-22"><span lang="EN-US" style="font-family:"MS Pゴシック";color:#A86F79;text-decoration:none"><span lang="EN-US">人文・社会科学の統計学</span></span><span style="color:#A86F79;text-decoration:none"> (</span><span lang="EN-US" style="font-family:"MS Pゴシック";color:#A86F79;text-decoration:none"><span lang="EN-US">基礎統<span lang="EN-US">計学</span></span></span><span style="color:#A86F79;text-decoration:none">)</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">)でもほんの数ページほど回帰分析における予測について述べている箇所があるだけです</span><a name="fn-890943d4"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-890943d4" title="その代わり計量時系列分析の項では予測に関してスペースを大きく割いているが、そもそも線形モデルではない"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*11</span></a><span style="font-size:10.5pt;color:#3D3D3D">。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">R</span><span style="font-size:10.5pt;color:#3D3D3D">やら</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/Python"><span style="text-decoration:none">Python</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">やらの統計分析系パッケージでは当然のように予測はできるんですけどね。。。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">むしろ</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%EC%C2%E7%BD%D0%C8%C7%B2%F1"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">東大出版会</span></span></a><a href="http://d.hatena.ne.jp/keyword/%C0%C4%CB%DC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">青本</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">・</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%CE%D0%CB%DC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">緑本</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">とも偏回帰係数の検定などなどにページが割かれており、また「当てはめ」の良し悪しということについての記述も多く、そういうところから見てもやはり</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">は「説明」により重きを置く体系なのだなという印象を持っています。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">実際、モデル評価にはどちらかというと学習データのみからでも計算可能な</span><a name="fn-dd514ab3"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-dd514ab3" title="尤度を用いて解析的に、という意味で"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*12</span></a><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/AIC"><span style="text-decoration:none">AIC</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">などの指標などが多いということもあり、未知データへの適用よりも学習データに対する「説明」が重視されていると見て良さそうです。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> <br> <o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:dotted #999999 1.0pt;padding:0mm 0mm 0mm 0mm;background:white;margin-left:42.0pt;margin-right:0mm"> <h3 style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:6.0pt;margin-left:0mm;background:white;border:none;padding:0mm"> <span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:14.5pt;color:#3D3D3D">はデータから「予測」することにより重きを置く</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></h3> </div> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> </span><span style="font-size:10.5pt;color:#3D3D3D">巷でよく言われるのが、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">と言えば「</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Yes/No</span><span style="font-size:10.5pt;color:#3D3D3D">の二値や</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">1, 2, 3...</span><span style="font-size:10.5pt;color:#3D3D3D">といったカテゴリに分類する」ためのモデルを作るもの、という理解かなと。かつてならスパム分類、今ならヒト・イヌ・ネコといったカテゴリへの画像分類といった事例が人口に膾炙しているせいもあり、多くの人々がそのように理解していても不思議ではないですね。ただ、それはあまり正確な理解ではない気がします。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> <br> <o:p></o:p></span></p> <h4 style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:6.0pt;margin-left:42.0pt;background:white"> <span style="font-size:12.5pt;color:#3D3D3D">教師あり学習</span><span lang="EN-US" style="font-size:12.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></h4> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> </span><span style="font-size:10.5pt;color:#3D3D3D">例えば多くの教師あり学習分類器は、目的変数をカテゴリ型から連続値を持つ数値型に替え、さらに損失(誤差)関数などを変更することで「回帰器」としても学習させることができます。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/SVM"><span style="text-decoration:none">SVM</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">もランダムフォレストも一般には二値分類器としてばかり捉えられがちですが、どちらも回帰器として学習させることが可能です。もちろん今流行の</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Deep Learning (DNN)</span><span style="font-size:10.5pt;color:#3D3D3D">も、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Xgboost</span><span style="font-size:10.5pt;color:#3D3D3D">も、回帰器を構築できます。なので、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">は常に</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Yes/No</span><span style="font-size:10.5pt;color:#3D3D3D">の二値のようなカテゴリ分類しか学習しない、回帰はやらない、というのは正しくないわけです。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">そして重回帰分析とロジスティック回帰が多くの</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の教科書でも取り上げられているように、線形モデル族も基本的には</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の一分野としてカウントされ得ます。もちろん、その中では普通に偏回帰係数のようなパラメータの推定も行われます。そういう意味においては、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">でも手法によっては「説明」の要素を持っているとも言えます。それこそランダムフォレストや</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Xgboost</span><span style="font-size:10.5pt;color:#3D3D3D">も変数重要度の計算をやれるわけで。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">しかしながら、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の最大の特徴はやはり「未来値の予測」にあると言って良いでしょう。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZu2MKg81vkNgWaHIrRjPZRZTOaKxdf-6OO4RavpDkHoFs3L7UoiKSrvr9xh2s0JcAeeuta8-EH2yoX1O7dRChhR6bzUUgTQ2j5z-Mc2B7byv63A20_z_p40-ppAXxXifTgGRSUPbuBC_m/s1600/image002-790005.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZu2MKg81vkNgWaHIrRjPZRZTOaKxdf-6OO4RavpDkHoFs3L7UoiKSrvr9xh2s0JcAeeuta8-EH2yoX1O7dRChhR6bzUUgTQ2j5z-Mc2B7byv63A20_z_p40-ppAXxXifTgGRSUPbuBC_m/s320/image002-790005.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6626150965636321490" /></a></span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">上の図で言えば、赤い点</span><a name="fn-2aba168f"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-2aba168f" title="例えばCVしたECサイトユーザー"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*13</span></a><span style="font-size:10.5pt;color:#3D3D3D">と青い点</span><a name="fn-a1327adc"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-a1327adc" title="CVしなかったユーザー"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*14</span></a><span style="font-size:10.5pt;color:#3D3D3D">から成るデータに基づいて紫の線で描かれるような分類モデルを学習する、というのが</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の本義なわけです。この紫の線がうまく描ければ、新たなデータとして別の点</span><a name="fn-7839f2b5"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-7839f2b5" title="つまり説明変数は分かっているがまだCVするかどうか分かっていないユーザー"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*15</span></a><span style="font-size:10.5pt;color:#3D3D3D">が追加された時に、その点が赤</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">or</span><span style="font-size:10.5pt;color:#3D3D3D">青のどちらか</span><a name="fn-125ef330"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-125ef330" title="CVするorしない"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*16</span></a><span style="font-size:10.5pt;color:#3D3D3D">を正しく分類できるはず!というのが</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">における「予測」の思想です</span><a name="fn-34d7e5c0"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-34d7e5c0" title="もっともこれの元ネタはXORデータセットの単純3層NNによる分類で、しかもご覧の通り精度はかなり悪そう(笑)"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*17</span></a><span style="font-size:10.5pt;color:#3D3D3D">。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">ただ、線形モデル族のようにヒトが直感的に理解できる形でモデルが出来上がるとは限らないのが</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の特徴で、そこが</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">との大きな違いかもしれません。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">例えば</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/SVM"><span style="text-decoration:none">SVM</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">であれば分離超平面はサポート</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%AF%A5%BF%A1%BC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">ベクター</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">によって与えられ、そこには偏回帰係数のような綺麗に定式化されたモデルはありません。ランダムフォレストなら山のような決定木からなる「森」ですし、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Deep Learning</span><span style="font-size:10.5pt;color:#3D3D3D">に至ってはレイヤーごとに表現が圧縮されてしまうので線形モデルのような定式化もへったくれもありません</span><a name="fn-b14a6c40"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-b14a6c40" title="もっともCNNだとレイヤーごとに解像度ごとの表現が取れたりするので別の意味で綺麗という"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*18</span></a><span style="font-size:10.5pt;color:#3D3D3D">。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">このように「説明」を多少犠牲にしてでも「予測」の精度を上げたい、というのがおそらく</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の思想なのだと僕は理解しています。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">その究極形がいわゆる「オンライン学習(ストリーミング学習)」かな、と。学習データをまとめて読み込んでモデルを作る&新たにデータが加わった場合はまた一から読み込み直す「バッチ学習」とは異なり、「オンライン学習」では過去に計算したモデルを(例えば線形モデル族などの)パラメータのみで表現可能なようにしておき新たにデータが加わった場合はそのデータだけを読み込んでパラメータのみを更新する、というやり方をするわけです。イメージとしては、よく引き合いに出されるメールの「重要」ラベル分類かと</span><a name="fn-c3278e1d"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-c3278e1d" title="メールが新たに来るたびにモデルパラメータを更新し、それ以降過去のメールは参照しない"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*19</span></a><span style="font-size:10.5pt;color:#3D3D3D">。このやり方だと過去のデータは全部捨ててしまうこともできるため&現在のパラメータが最近のデータの影響を受けやすいため「説明」には必ずしも適さない一方で、「予測」を計算負荷を抑えた上でうまくできるということになります。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">なお</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">でのモデル評価というと、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">cross validation</span><span style="font-size:10.5pt;color:#3D3D3D">や</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">hold-out</span><span style="font-size:10.5pt;color:#3D3D3D">のようにそもそも学習データとは別に(何かしらの方法で)テストデータを作ってその予測精度を見るというものが多く、この点でも</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">は「予測」により重きを置く</span><a name="fn-313dbba7"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-313dbba7" title="CVが用いられることが多いという意味ではAICで評価するよりもさらに実際的に汎化性能の良し悪しをチェックしているとも言えます"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*20</span></a><span style="font-size:10.5pt;color:#3D3D3D">体系なのだなという印象があります。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">余談ですが、同じような評価は教師あり「回帰」器でもできます。ただ、そもそも</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">系の回帰器は統計</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">モデリング</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">による回帰モデルに比べると様々なばらつき要因に対して弱いかなぁという印象も。。。</span><a name="fn-ca4c9200"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-ca4c9200" title="特にSVMだろうとランダムフォレストだろうと非線形トレンドのあるデータには機械学習回帰器はめっぽう弱い"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*21</span></a><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <h4 style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:6.0pt;margin-left:42.0pt;background:white"> <span style="font-size:12.5pt;color:#3D3D3D">教師なし学習</span><span lang="EN-US" style="font-size:12.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></h4> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> </span><span style="font-size:10.5pt;color:#3D3D3D">これまで散々教師あり学習の話をしてきましたが、教師なし学習(</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF%A5%EA%A5%F3%A5%B0"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタリング</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">や広義に見て因子分解系など)も実務上は最終的に「何かしらの</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタ</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">に新たにやってきたデータを振り分ける」のが目的になりがちなので、やはり「説明」よりは「予測」に重きを置くという印象を持っています。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">例えば</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">K-means</span><span style="font-size:10.5pt;color:#3D3D3D">のような手法で学習データ</span><a name="fn-2af28764"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-2af28764" title="例えば広告面"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*22</span></a><span style="font-size:10.5pt;color:#3D3D3D">を</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">k</span><span style="font-size:10.5pt;color:#3D3D3D">個の</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタ</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">に割り振ってから、それぞれの特徴量</span><a name="fn-dd74aa51"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-dd74aa51" title="テキストから生成した素性"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*23</span></a><span style="font-size:10.5pt;color:#3D3D3D">に添えて改めて</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">1,...,k</span><span style="font-size:10.5pt;color:#3D3D3D">なるカテゴリを学習データとして与え、これを教師あり学習の多クラス分類器にかけて分類モデルを作り、未知データ</span><a name="fn-7a3175a8"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-7a3175a8" title="新たに獲得した別の広告面"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*24</span></a><span style="font-size:10.5pt;color:#3D3D3D">を</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">k</span><span style="font-size:10.5pt;color:#3D3D3D">個ある</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタ</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">のいずれかに割り振るという発想は、割と巷ではよく使われている印象です</span><a name="fn-609d2671"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-609d2671" title="オンライン中華レストラン過程みたいに未知データを次々と既存or新規クラスタに割り振っていく手法もあるにはありますが"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*25</span></a><span style="font-size:10.5pt;color:#3D3D3D">。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">というわけで、教師なし学習であってもやはり「予測」に重きを置くことになるケースが多いというのが僕の理解です。ちなみに教師あり学習と組み合わせない場合でも、そもそも例えば</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF%A5%EA%A5%F3%A5%B0"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタリング</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">であれば出たとこ勝負で目の前のデータを</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">k</span><span style="font-size:10.5pt;color:#3D3D3D">個にまとめることになるし、レコメンドであれば新たにやってきたユーザーに対して何かしら好んでくれそうなアイテムを推薦することになるので、どのみち「予測」をやることになる気もしますが。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> <br> <o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:dotted #999999 1.0pt;padding:0mm 0mm 0mm 0mm;background:white;margin-left:42.0pt;margin-right:0mm"> <h3 style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:6.0pt;margin-left:0mm;background:white;border:none;padding:0mm"> <span style="font-size:14.5pt;color:#3D3D3D">とは言え、</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:14.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:14.5pt;color:#3D3D3D">の違いは基本的にはそれほど大きくないし互いに重なる部分だらけ</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></h3> </div> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> </span><span style="font-size:10.5pt;color:#3D3D3D">色々</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">との違いをあげつらってきましたが、ぶっちゃけこの両者は「違う」というより「重なる」部分の方が多いというのが個人的印象です。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">まず、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">であろうと</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">であろうと、モデルを構築するためには学習データが必要です。特に</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の視点から線形モデル族を構築する場合と、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の視点から学習モデルを構築する場合とでは、どちらであってもそれ相応に十分な量のデータを貯めてモデル推定に回さなければなりません。つまり、統計分析でも</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">でもモデルを作りたければ学習データを大量に貯めなければいけないことに変わりはないわけです</span><a name="fn-870407d2"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-870407d2" title="オンライン学習でも実務上は最初のステップではある程度学習データを貯めてモデル推定を行い、それなりに最初から予測精度の高いパラメータにセットしておく必要がある"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*26</span></a><span style="font-size:10.5pt;color:#3D3D3D">。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">なので、統計分析と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">とでデータの扱いが異なるということはありません。ぶっちゃけ、システム基盤を組んでの実務の現場では、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%C9%A5%DB%A5%C3%A5%AF"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">アドホック</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">分析として統計分析を行う場合でも、システム実装として</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">を実践する場合でも、いずれにせよ膨大な</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%C8%A5%E9%A5%F3%A5%B6%A5%AF%A5%B7%A5%E7%A5%F3"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">トランザクション</span></span></a><a name="fn-59b98753"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-59b98753" title="例えば会員制サイトの膨大な取引データや会員のアクションログなど"><span style="color:#A86F79;text-decoration:none">*27</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">から必要なデータを抽出してきて</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">DB</span><span style="font-size:10.5pt;color:#3D3D3D">に貯め、これを分析のために適宜抽出して分析基盤に回すための仕組みが必ず求められます。そういうわけで、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">IT</span><span style="font-size:10.5pt;color:#3D3D3D">システム基盤として見れば、どちらであっても必要なインフラにそれほど差はない気がしています。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">次に、線形モデル族が</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の双方に重なっている点からも分かるように、数理的基礎という意味では両者はむしろ密接な関係にあると見るべきです。特に</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">においては</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">に近い方法論に基づいてモデル推定などなどを行う手法は「統計的学習」と呼ばれ、そもそも『統計的学習の基礎』という</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の百科事典的大著までもがあるわけで。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">にせよ、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">にせよ、根底にあるのはひとまず「目の前にあるデータを</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">モデリング</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">すること」「そのために『ばらつき』をうまく扱うこと」の</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">2</span><span style="font-size:10.5pt;color:#3D3D3D">点かな、と個人的には思っています。そのモデルを「説明」に使うのか、「予測」に使うのか、の思想が異なるのが</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の間の違いかなぁと。そこさえ分かっていれば概ねデータ分析の現場でもうまく使いこなせるようになるんじゃないでしょうか。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">そう言えば僕は階層</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%A4%A5%BA"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">ベイズ</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">以外ではあまり</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%A4%A5%B8%A5%A2%A5%F3"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">ベイジアン</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">は使わない(特に</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">だと殆ど使ってない)のであまり知ったかぶりはできないんですが、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%A4%A5%B8%A5%A2%A5%F3"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">ベイジアン</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">は割と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">とで重なりが大きい領域かなぁと思ってます</span><a name="fn-256b523a"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-256b523a" title="Gibbs Samplerは統計モデリングでパラメータの事後分布を求めるためのMCMCでも、ノンパラベイズ系クラスタリング手法の逐次サンプリング更新でも使われたりする"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*28</span></a><span style="font-size:10.5pt;color:#3D3D3D">。ノンパラ</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%A4%A5%BA"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">ベイズ</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の理論のところなんか読んでると尚更。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> <br> <o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:dotted #999999 1.0pt;padding:0mm 0mm 0mm 0mm;background:white;margin-left:42.0pt;margin-right:0mm"> <h3 style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:6.0pt;margin-left:0mm;background:white;border:none;padding:0mm"> <span style="font-size:14.5pt;color:#3D3D3D">データ分析において大事なのは「</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:14.5pt;color:#3D3D3D">『も』</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:14.5pt;color:#3D3D3D">『も』理解する」こと、ということで推薦図書など</span><span lang="EN-US" style="font-size:14.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></h3> </div> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><br> </span><span style="font-size:10.5pt;color:#3D3D3D">ということで、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">「も」</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">「も」理解するように努めましょう!というのがこの記事で言いたかったこと。そこで推薦図書を紹介したいのですが、まず</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">をコードを書いて計算結果を見ながら学ぶにはこちら。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">R</span><span style="font-size:10.5pt;color:#3D3D3D">で一通り試してみながら、一般的な</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">のイロハをやはり過不足なく学ぶことができるはずです。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">一方、</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">はある程度勉強したという人が</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">についても理解したいというのであれば、最低でもこちらの本を一通り読んでおくべきでしょう。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://tjo.hatenablog.com/entry/2015/09/07/190000"><span lang="EN-US" style="font-family:"MS Pゴシック";color:#A86F79;text-decoration:none"><span lang="EN-US">先日このブログでも大絶賛した</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">ばかりですが、この本には初心者が</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">を学ぶ上で必要な全てが過不足なく詰まっています。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">R</span><span style="font-size:10.5pt;color:#3D3D3D">でも</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/Python"><span style="text-decoration:none">Python</span></a></span><span style="font-size:10.5pt;color:#3D3D3D">でも</span><a name="fn-207555ba"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-207555ba" title="果てはJuliaやSpark MLlibでも"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*29</span></a><span style="font-size:10.5pt;color:#3D3D3D">実践できるので、どの開発環境の方にとっても有益な本だと思います。というか、</span><b><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span></b><b><span style="font-size:10.5pt;color:#3D3D3D">について知ったかぶりがしたいなら最低でもこの養成読本・</span></b><b><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span></b><b><span style="font-size:10.5pt;color:#3D3D3D">入門編の特集</span></b><b><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">1</span></b><b><span style="font-size:10.5pt;color:#3D3D3D">ぐらい読め!</span></b><span style="font-size:10.5pt;color:#3D3D3D">ってところですかね(笑)。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">そう言えばバランス良く統計分析と</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">の両方を同時に学べる本ってほとんどない気がするんですが、強いて言うなら</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">R</span><span style="font-size:10.5pt;color:#3D3D3D">で</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計学</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">+</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">という一連の流れを学ぶにはこちらを。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoNormal" style="background:white"><span lang="EN-US" style="font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p> </o:p></span></p> <p style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <span style="font-size:10.5pt;color:#3D3D3D">はい、例の昨年出版した拙著ということで手前味噌でごめんなさい(笑)。基本的に説明が平易</span><a name="fn-1b019608"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#f-1b019608" title="単に数式を端折ったという意味で"><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*30</span></a><span style="font-size:10.5pt;color:#3D3D3D">なので、まず拙著を通読&</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">R</span><span style="font-size:10.5pt;color:#3D3D3D">コード写経していただくというのが良いかなと。ある程度</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C5%FD%B7%D7%B3%D8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">統計<span lang="EN-US">学</span></span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">・</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span><span style="font-size:10.5pt;color:#3D3D3D">それぞれのコンセプトについても簡潔に説明してあるので、あくまでも導入としてお読みいただければ幸いです。</span><span lang="EN-US" style="font-size:10.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-65bfae5b"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-65bfae5b"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*1</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">いつも通りの炎上ラーニング</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-c14d5b2a"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-c14d5b2a"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*2</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">3</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">章</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-5fe48fdf"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-5fe48fdf"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*3</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">4</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">章</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-a35a8da4"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-a35a8da4"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*4</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">例えば</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">DB</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">基盤</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">A</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">の何かしらのレイテンシ</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-64b9b62f"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-64b9b62f"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*5</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">DB</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">基盤</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">B</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">のレイテンシ</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-ab59504b"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-ab59504b"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*6</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">例えばユーザーグループ</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">A, B, C, D, E</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">それぞれに</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%DE%A5%DB"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">スマホ</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">広告</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">1, 2, 3, 4, 5</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">を表示し分けるとか</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-21832525"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-21832525"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*7</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">例えば広告企画</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">a, b, c, d...</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-b0738f29"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-b0738f29"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*8</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CV</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">数</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">or</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">売上高など</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-3b41bf85"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-3b41bf85"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*9</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">「弾性率」みたいな捉え方をされることもありますね</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-c8e919c8"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-c8e919c8"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*10</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">広告出稿数、広告予算など当事者の側が操作可能な変数</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-890943d4"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-890943d4"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*11</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">その代わり計量時系列分析の項では予測に関してスペースを大きく割いているが、そもそも線形モデルではない</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-dd514ab3"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-dd514ab3"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*12</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">尤度を用いて解析的に、という意味で</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-2aba168f"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-2aba168f"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*13</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">例えば</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CV</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">した</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/EC%A5%B5%A5%A4%A5%C8"><span style="text-decoration:none">EC</span><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">サイト</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">ユーザー</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-a1327adc"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-a1327adc"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*14</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CV</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">しなかったユーザー</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-7839f2b5"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-7839f2b5"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*15</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">つまり説明変数は分かっているがまだ</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CV</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">するかどうか分かっていないユーザー</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-125ef330"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-125ef330"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*16</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CV</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">する</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">or</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">しない</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-34d7e5c0"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-34d7e5c0"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*17</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">もっともこれの元ネタは</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">XOR</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">デー</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%BF%A5%BB%A5%C3%A5%C8"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">タセット</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">の単純</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">3</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">層</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">NN</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">による分類で、しかもご覧の通り精度はかなり悪そう(笑)</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-b14a6c40"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-b14a6c40"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*18</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">もっとも</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CNN</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">だとレイヤーごとに解像度ごとの表現が取れたりするので別の意味で綺麗という</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-c3278e1d"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-c3278e1d"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*19</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">メールが新たに来るたびにモデルパラメータを更新し、それ以降過去のメールは参照しない</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-313dbba7"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-313dbba7"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*20</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">CV</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">が用いられることが多いという意味では</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/AIC"><span style="text-decoration:none">AIC</span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">で評価するよりもさらに実際的に汎化性能の良し悪しをチェックしているとも言えます</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-ca4c9200"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-ca4c9200"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*21</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">特に</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/SVM"><span style="text-decoration:none">SVM</span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">だろうとランダムフォレストだろうと</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C8%F3%C0%FE%B7%C1"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">非線形</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">トレンドのあるデータには</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%B5%A1%B3%A3%B3%D8%BD%AC"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">機械学習</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">回帰器はめっぽう弱い</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-2af28764"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-2af28764"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*22</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">例えば広告面</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-dd74aa51"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-dd74aa51"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*23</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">テキストから生成した素性</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-7a3175a8"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-7a3175a8"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*24</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">新たに獲得した別の広告面</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-609d2671"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-609d2671"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*25</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">オンライン中華レストラン過程みたいに未知データを次々と既存</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">or</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">新規</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタ</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">に割り振っていく手法もあるにはありますが</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-870407d2"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-870407d2"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*26</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">オンライン学習でも実務上は最初のステップではある程度学習データを貯めてモデル推定を行い、それなりに最初から予測精度の高いパラメータにセットしておく必要がある</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-59b98753"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-59b98753"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*27</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">例えば会員制サイトの膨大な取引データや会員のアクションログなど</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-256b523a"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-256b523a"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*28</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Gibbs Sampler</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">は統計</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">モデリング</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">でパラメータの事後分布を求めるための</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/MCMC"><span style="text-decoration:none">MCMC</span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">でも、ノンパラ</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%D9%A5%A4%A5%BA"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">ベイズ</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">系</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%A5%AF%A5%E9%A5%B9%A5%BF%A5%EA%A5%F3%A5%B0"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">クラスタリング</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">手法の</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><a href="http://d.hatena.ne.jp/keyword/%C3%E0%BC%A1"><span lang="EN-US" style="font-family:"MS Pゴシック";text-decoration:none"><span lang="EN-US">逐次</span></span></a></span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">サンプリング更新でも使われたりする</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-207555ba"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-207555ba"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*29</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">果ては</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Julia</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">や</span></span><span class="footnote-text"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">Spark MLlib</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">でも</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="footnote" style="mso-margin-top-alt:9.6pt;margin-right:0mm;margin-bottom:9.6pt;margin-left:0mm;background:white"> <a name="f-1b019608"></a><a href="https://tjo.hatenablog.com/entry/2015/09/17/190000#fn-1b019608"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#A86F79;text-decoration:none">*30</span></a><span class="footnote-delimiter"><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D">:</span></span><span class="footnote-text"><span style="font-size:9.5pt;color:#3D3D3D">単に数式を端折ったという意味で</span></span><span lang="EN-US" style="font-size:9.5pt;font-family:"Helvetica","sans-serif";color:#3D3D3D"><o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-59494856676054655892018-11-21T12:23:00.001+09:002018-11-21T12:23:38.442+09:00そもそも確率ってなんなの?<div class="WordSection1"> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">学校でも日常生活でもよく耳にする<b>確率</b>。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">「そもそも確率ってなんなの?」</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">このページでは以下の</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">3</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">種類の確率の定義についてまとめています。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">数学的確率</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level2 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">小中学校で習う確率。苦手だった人も多いはず。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">統計的確率</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level2 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">数学的確率を少し拡張。自然と利用している事が多い気がする。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">公理論的確率</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level2 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">現代数学における確率の考え方。統計学や人工知能の分野でよく用いられる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">他にも定義がありそうなので、興味がある方は調べてみてください。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;background:white;border:none;padding:0mm"> <b><span style="font-size:21.5pt;font-family:"MS Pゴシック";color:#333333">確率の定義</span></b><b><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;background:white;border:none;padding:0mm"> <b><span style="font-size:19.0pt;font-family:"MS Pゴシック";color:#333333">数学的確率</span></b><b><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </div> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">確率</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">求める場合の数起こりうる全ての場合の数</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">確率</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">求める場合の数起こりうる全ての場合の数</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">小中学校で習う確率。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">サイコロとかコインとかのあれ。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">場合の数の比</span></b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">現代確率論と比較して古典的確率とも呼ばれる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">ピエール・シモン・ラプラス</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">(Pierre-Simon Laplace)</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">によって</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1814</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">年にまとめられた。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">この確率は、<b>どの単一事象の起こる確率も同じであるという仮定</b>の下に成り立っている。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">《<b>同様に確からしい</b></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">(<i>equally likely</i>)</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">》ってやつ。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">サイコロはどの目も等しい確率で上を向くし、コインの表と裏のでる確率は等しい。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">だからサイコロ</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">回振ったらそれぞれの目がでる確率は</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1/6</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">だし、コインの表がでる確率は</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1/2</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">この定義は、直感的であり、確率に対する理解を深めるには良いが、適用できる状況というのは限られてくる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">適用できない例として、各事象が同様に確からしいとは限らない場合が挙げられる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">じゃんけんにおいて、それぞれの事象</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">(</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">「ぐー」「ちょき」「ぱー」</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">)</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">の起こる確率は等しいの?</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">ただまあ、結局サイコロもコインも同様に確からしい保証は無いと言ってしまえばそれまで。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">この確率では、各事象の起こる確率は同様に確からしいと仮定することで、確率を計算する。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">じゃんけんもそれぞれの起こる確率は同様に確からしいとすることで確率を計算することが可能となる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">適用できる範囲が狭いだけであって、間違っているわけではない。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">後述する公理論的確率の特殊化とみなせる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;background:white;border:none;padding:0mm"> <b><span style="font-size:19.0pt;font-family:"MS Pゴシック";color:#333333">統計的確率</span></b><b><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </div> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">確率</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">事象の起こった回数試行回数</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">確率</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">事象の起こった回数試行回数</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">発生頻度の比</span></b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">世間一般的に、確率といったらこれが割りと多い気がする。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">プロ野球選手の打率とか、交通事故に遭遇する確率とかまさにこれ。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">確率を頻度で定義する。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">数学的確率と異なり、同様に確からしいという仮定が必要ない。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">じゃんけんで勝つ確率が知りたければ、ひったすらじゃんけんを繰り返し、勝った回数を数えることで求める。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">実際に試行をする必要があり、数学的に扱うのが少しむずかしい。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;background:white;border:none;padding:0mm"> <b><span style="font-size:19.0pt;font-family:"MS Pゴシック";color:#333333">公理論的確率</span></b><b><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </div> <div class="MsoNormal" align="center" style="mso-margin-top-alt:36.0pt;margin-right:0mm;margin-bottom:36.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック""> <hr size="2" width="100%" noshade="" style="color:#333333" align="center"> </span></div> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を集合とし、</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">A</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">、</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">B</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">の部分集合、</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Pr</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">の部分集合から実数への関数とする。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">公理</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1<o:p></o:p></span></p> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">A</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">)≥0</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr(A)≥0</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">公理</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">2<o:p></o:p></span></p> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(Ω)=1</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr(Ω)=1</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">公理</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">3<o:p></o:p></span></p> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">A</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">∩</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">B</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">={}</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm"> ならば</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">A</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MS 明朝","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">∪</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">B</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">)=</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">A</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">)+</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">B</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">A∩B={}</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm"> ならば</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr(A</span><span lang="EN-US" style="font-size:12.0pt;font-family:"MS ゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">∪</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">B)=Pr(A)+Pr(B)</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Pr</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">が全ての公理を満たすとき、</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">集合</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を<b>標本空間</b></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">の部分集合を<b>事象</b></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">関数</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Pr</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を<b>確率分布</b></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">実数</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Pr(A)</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">A</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">が起きる<b>確率</b></span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">とする。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <div class="MsoNormal" align="center" style="mso-margin-top-alt:36.0pt;margin-right:0mm;margin-bottom:36.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック""> <hr size="2" width="100%" noshade="" style="color:#333333" align="center"> </span></div> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">現代数学における確率の定義。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">確率の公理</span></b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">を定め、その公理を満たすものを確率として定義する。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">確率の公理は</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1933</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">年、アンドレイ・ニコラエヴィッチ・コルモゴロフ</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">(Andray Nikolaevich Kolmogorov)</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">によって提唱された。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">これまでの定義と異なり、かなり抽象度の高い定義となっている。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">そのため、多くの問題に適用が可能である。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">起こりうる事象を網羅する<b>標本空間</b>と、対応する<b>確率分布</b>を考えることで確率を論じることができる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">サイコロを例にしてみる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">サイコロを</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">回振る時の標本空間</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">は以下のようになる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Ω={1</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,2</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,3</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,4</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,5</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,6</span><span style="font-size:12.0pt;font-family:"Arial Unicode MS";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">}</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Ω={1</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,2</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,3</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,4</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,5</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">,6</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333;border:none windowtext 1.0pt;padding:0mm">がでる</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">}</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">漏れもダブりもない。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">続いて確率分布。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="background:white;border-collapse:collapse;border:none"> <thead> <tr> <td style="border-top:#DDDDDD;border-left:#DDDDDD;border-bottom:#CCCCCC;border-right:#CCCCCC;border-style:solid;border-width:1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">ω<o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1</span></b><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">がでる</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">2</span></b><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">がでる</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">3</span></b><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">がでる</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">4</span></b><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">がでる</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">5</span></b><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">がでる</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">6</span></b><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">がでる</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">計</span></b><b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </td> </tr> </thead> <tbody> <tr> <td style="border-top:none;border-left:solid #DDDDDD 1.0pt;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">Pr(ω</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">)</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>1</sub><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>2</sub><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>3</sub><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>4</sub><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>5</sub><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>6</sub><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">1<o:p></o:p></span></p> </td> </tr> </tbody> </table> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">確率分布は上のように表で書くこともあれば</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">ω</span><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">)=</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main","serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">=1,2,3,4,5,6)</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333;border:none windowtext 1.0pt;padding:0mm">Pr(ωi)=pi(i=1,2,3,4,5,6)</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="text-align:left;background:white"><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">のように数式で書く場合もある。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">ここで一様な確率分布、すなわちどの単一事象の起こる確率も同じであるような確率分布を考えることで、数学的確率と同じ議論となる。この例の場合</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333">p<sub>i</sub>=1/6</span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">である。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><br> </span><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">さらに、同様に確からしくないサイコロやコインに関しても、確率分布を考えれば議論ができる。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-top:18.0pt;text-align:left;background:white"> <span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">具体的に議論するためにはさらに、確率変数やら確率密度関数といった概念がここから展開されていく。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;background:white;border:none;padding:0mm"> <b><span style="font-size:21.5pt;font-family:"MS Pゴシック";color:#333333">まとめ</span></b><b><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></b></p> </div> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">数学的確率</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">統計的確率</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><b><span style="font-size:12.0pt;font-family:"MS Pゴシック";color:#333333">公理論的確率</span></b><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI","sans-serif";color:#333333"><o:p></o:p></span></p> <p class="MsoPlainText"><span lang="EN-US"><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-72720609265687695042018-11-21T12:20:00.001+09:002018-11-21T12:20:56.571+09:00確率論と統計学の違いについて。確率について。
<br>確率とはある事象がどれくらい起こり得るかの程度であり、0以上1以下の数字(または0%〜100%)で表されます。
<br>
<br>私たちが生きて生活している世界では、絶対というものはほとんどなく、
<br>(ほぼ)同じ条件の下で同じことを繰り返したとしても、別の結果が得られることがたくさんあります。
<br>
<br>数学やニュートン力学の枠組みの中では多くの場合、物事は原因に対し、結果が一つに定まるという因果律的な考え方をし、そのような事象を扱いますが、
<br>
<br>確率論の枠組みでは、物事は原因に対し、偶然性によって結果が変わると考えます。
<br>
<br>最も分かりやすい例の一つはサイコロを振る試行ですね。
<br>
<br>歪んでいないサイコロを1回降って1の目が出たとしても、次に同じサイコロを降った場合、もちろん1が出るとは限りません。
<br>
<br>しかし、偶然性により結果が変わるといっても、歪んでないサイコロの場合、
<br>それぞれの目は6回に1回、つまり、1/6の確率で出ると考えられます。
<br>
<br>原因に対して何かの結果が得られる時、それは偶然性に左右されるものの、その偶然性は規則性を持っており、それに基づいて様々な事象がどれくらい起こりやすいか?
<br>
<br>といったことを考えることができるのが、確率的思考の面白さと言えます。
<br>
<br>サイコロの例で言うと、それぞれの目が出る確率は1/6ですから、それを基に「2回連続で同じ目が出る確率」や「3回連続で1が出る確率」などが計算できます。
<br>
<br>
<br>確率論と統計学の違いについて。
<br>確率論においては上述のように、ある事象が起こる確率が決まっていて、それに基づいて物事を考えることができます。
<br>
<br>サイコロの例で言うと、1が出る確率は1/6と決まっているわけです。
<br>これを用いて、例えば「2回連続で1が出る確率」であれば \frac{1}{6}\times\frac{1}{6}=\frac{1}{36} と計算することができますね。
<br>
<br>このように、
<br>
<br>ある事象が起こる確率(「1の目がでる確率は1/6」)
<br>
<br>を定めれば
<br>
<br>別の事象が起こる確率(「2回連続で1の目がでる確率」)
<br>
<br>を計算することができます。
<br>
<br>逆に、統計学では、得られた事実やデータから、ある事象が起こる本当の確率などについて何らかの結論を導こうとします。
<br>
<br>確率論が演繹的な考え方なのに対し、統計学は観測された事象やデータから出発して、その背後にある本当の確率や起こっていることを説明しようとする帰納的なアプローチと言えます。
<br>
<br>例えば、サイコロを100回振って20回1の目が出たとします。
<br>統計学では、この事実(データ)を基に、その背後にある「1の目が出る本当の確率」について考察するわけです。
<br>
<br>この例で言えば、「1が出る本当の確率」は20/100で大体20%くらいなんじゃないか?といったことを考えることができますね。
<br>
<br>他にも例えば、サイコロを3回振って3回連続で1の目が出た、という事実(データ)があるとします。
<br>
<br>この事実から、「このサイコロは1の目が出やすいように歪んでいる」んではないか?といった仮説を立てることができますね。
<br>
<br>では本当に「1が出やすいように歪んでいる」と結論づけることができるのでしょうか?
<br>
<br>上記2つの例はそれぞれ推定(前者)、検定(後者)という手法で、統計学的に結論を出す方法論が確立されています。
<br>
<br>このように統計学においては、得られた事実やデータを基に、何が言えるのか?を考えることができるのです。
<br>
<br>統計学: データ → 真理
<br>確率論: 真理 → データ
<br>
<br>という方向で議論が展開されるということです。
<br>
<br>統計学の理論や手法では、確率論を必ず利用しますので、
<br>統計学を理解するために確率論を理解することは非常に重要なのです。hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-90925372335439297092018-11-19T12:30:00.001+09:002018-11-19T12:30:58.872+09:00サティア・ナデラ氏が語る「あらゆるアプリにAIが組み込まれる時代」、そのときユーザーが得られる「機会」とベンダーが負うべき「責任」とは 日本マイクロソフトは、2018年11月5〜7日に都内のホテルで「Microsoft Tech Summit 2018」を開催した。同イベントは、2018年9月に米国で開催された「Microsoft Ignite」での発表内容をフォローアップしつつ、日本独自の内容を盛り込んだものだ。本稿では、Microsoft CEO(最高経営責任者)のサティア・ナデラ氏の講演を中心に基調講演の模様を紹介する。
<br>
<br> 基調講演のオープニングは、日本マイクロソフト 代表取締役社長の平野拓也氏が務めた。平野氏は日本マイクロソフトが先行して開発を進めるソーシャルAI(人工知能)「りんな」と会話をしながら登場。ここ数年、日本マイクロソフトが行う大規模なイベントではりんなの最新状況が紹介されるのが定番となっており、今回は「共感視覚モデル」と呼ばれる画像認識技術によって、「感情」のこもった会話が可能な様子が示された。
<br>
<br> AIによる従来の画像認識では、画像内に存在するものの名前や形、色などを判別し、回答するのが一般的だ。例えば「成人男性」「子ども」「犬」といったものが一緒に写っている画像であれば、それらを個別に認識し、何が写っているのかをユーザーに示す。一方、「共感視覚モデル」は、同様の画像が写っている内容から「散歩をする家族連れ」の可能性を推測する。りんなは、その推測結果を「家族連れかな?」といった形式で表現し、ユーザーと自然に会話するという。
<br>
<br>共感視覚モデル
<br> こうした例を示しながら、平野氏は次のように話す。
<br>
<br> 「Microsoftが進めるAI開発の方向性は『人間を置き換えるものではなく、人間が持っている創造性をより拡張するもの』だ。そして、『インダストリー』『ワークスタイル』『ライフスタイル』の3領域で、イノベーションを起こすことに貢献する」(平野氏)
<br>
<br>コモディティ化した技術から「価値」を生み出す方法論が必須の時代に
<br>
<br> 続いて登壇したのは、サティア・ナデラ氏だ。ナデラ氏は、人々の生活や産業のあらゆる領域にコンピューティングを中心とした「テクノロジー」が急速に浸透する中で、どのようにビジネス機会を生み出し、成果を上げるかについて述べた。
<br>
<br> ナデラ氏はまず「Tech intensity =(Tech adoption)^Tech capability」という式を示した。「Tech intensity」は、直訳すれば「テクノロジー強度」といった意味だ。業種や業界を問わず、あらゆる企業が何らかの形で「ソフトウェア」に関わることになるデジタルトランスフォーメーション(DX)の時代において、テクノロジーに関する「強さ」は、競争力の高さにつながるという。
<br>
<br> そして、「Tech adoption」は「テクノロジーの導入」を、「Tech capability」は「差別化要素」を表す。導入したテクノロジーの力を、自らの差別化要素によって倍加することが、Tech intensityを増すことにつながっていくという。
<br>
<br> 「Tech intensityこそが、『地球上の全ての個人と組織が、より多くのことを達成できるようにする』というMicrosoftのミッションの礎になるものだ。Microsoftは、パートナーや顧客がDXを実現し、ビジネスで成功を収めるための構成要素となるテクノロジーを提供する」(ナデラ氏)
<br>
<br>全てのアプリケーションにAIが組み込まれていく
<br> Microsoftは近年、クラウド上のシステムとエッジデバイスの双方において高度な処理を行う「Intelligent Cloud」「Intelligent Edge」を提唱している。このコンセプトで、アプリケーション、インフラ、データおよびAIにどのような変化を起こそうとしているのだろうか。
<br>
<br> 「クラウドとエッジの双方に『Intelligent』を提供するのは、AIだ。画像認識、音声認識、言語理解、機械翻訳といったAIのさまざまな領域で、Microsoftは近年、多くの技術的なブレークスルーを実現している」(ナデラ氏)
<br>
<br> これらの成果は、同社がクラウドインフラとして展開する「Microsoft Azure」(Azure)上で提供する「Azure AIサービス」として、全ての組織がすぐに活用できるものになっている。
<br>
<br> 「今後、全てのアプリケーションにAIが組み込まれていく」(ナデラ氏)
<br>
<br> 既に「Microsoft 365」や、業務アプリケーション「Dynamics 365」といった同社の製品群においては、AIの組み込みが始まっている。そして、それらのアプリケーションによって蓄積される膨大なデータを、Azureのデータストア上に統合し、分析することで、新たな価値を生み出せる。
<br>
<br> ナデラ氏は、Microsoft Igniteで発表されたSAP、Adobe Systemsとの「Open Data Initiative」の取り組みに触れ、「各社のサービスやアプリケーション上で個別に管理している顧客データを、今後ユーザー企業がそれぞれのコントロールの下で統合し、活用できるようになる」と述べた。
<br>
<br> ナデラ氏は「最新のテクノロジーを導入してビジネスを変えている企業」として、日本におけるMicrosoftソリューションの導入事例を紹介した。ここで名前が挙げられたのは「小松製作所」「JTB&ナビタイムジャパン」「トヨタ自動車」「東日本旅客鉄道」「ニトリ」といった企業だ。それぞれの業界は異なっているが、共通するのはMicrosoftのテクノロジーを「ビルディングブロック」として組み合わせて、その上で自社の持つ独自性を生かして「現場の生産性、安全性を向上させる」「コミュニケーションを活性化する」「顧客満足度を高める」といった成果を生み出している点にあるという。
<br>
<br> 「各社が導入したテクノロジーは、既にコモディティ化しているかもしれない。しかし、より重要なのは各社がそれぞれの差別化要因に基づいて決断し、そこから事業的な成果を生み出していることにある」(ナデラ氏)
<br>
<br>ベンダーには「倫理的なAI」を作っていく責任がある
<br> あらゆる企業が「デジタル化」を押し進め、テクノロジーによる変革を図っていこうとする時代において、サービスのインフラやアプリケーションに関わるベンダーには「多くの責任が生まれる」(ナデラ氏)という。それは、「プライバシー」「セキュリティ」「AIの倫理」に関わるものである。
<br>
<br> 人々の生活や経済活動とテクノロジーとの結び付きが強まっている現在において、デジタル上のプライバシーを守ることは基本的な「人権」の一部になっている。ナデラ氏は、EUが2018年5月に施行したGDPR(一般データ保護規則)などを示しながら、同社が各国の規制に基づいたデジタルデータの適切な取り扱いを順守している点を強調した。
<br>
<br> またセキュリティについては、同社が保有する大量のログデータや監査情報の活用、インターネット上で流通しているマルウェアの精査、他のベンダーとのパートナーシップなどを通じて、自社のセキュリティ関連製品の強化やインターネット上のセキュリティ保護に取り組んでいるとした。
<br>
<br> AIの倫理は、これらとは若干異なった視点の「責任」になる。
<br>
<br> 「あらゆるアプリケーションにAIが組み込まれる世界において、ベンダーには『コンピュータで何ができるのか』だけではなく、『コンピュータで何をすべきか』を慎重に考える必要が生じてきている」(ナデラ氏)
<br>
<br> 現在Microsoft社内では、エンジニア、製品デザイナー、フロントセールス担当者を含む、さまざまな立場の社員が関わる「倫理委員会」を設けており、その中で「倫理的なAI」についての議論を交わしているという。
<br>
<br> 「セキュリティやアカウンタビリティーを内包しながら、人がアプリケーションに倫理的なAIを組み込むためのグローバルな設計原則を作ろうとしている」(ナデラ氏)
<br>
<br> 最後にナデラ氏は、「地球上の全ての個人と組織が、より多くのことを達成できるようにする」という同社のミッションに再度触れ、その達成に向けて行っている助成プログラムを紹介した。
<br>
<br> 例として挙げたのは、東北大学災害科学国際研究所のバイ・ヤンビン氏が手掛ける、AIやリモートセンシングといったテクノロジーを活用した「災害復旧」や「減災」に関する研究だ。この研究では、災害による被害情報を地図上にマッピングした上で、「どのエリアへ優先的に救援に向かえばいいか」「どうすれば救援チームが安全に現地に向かえるのか」といった難しい判断をサポートするAIモデルの開発に取り組んでいる。このシステムの開発にはAzureが活用されており、Microsoftもその取り組みを支援しているという。
<br>
<br> 「こうした取り組みは、テクノロジーが本当の意味で、インクルーシブな社会の一部となり、世界中のあらゆる場所での成長を促すことにつながっていく。私は日本を訪れるたびに、その社会と経済から、テクノロジーを活用していかに新たなものを作り出していくかのインスピレーションを得ている。今後も日本のあらゆる企業や組織がテクノロジーの力を取り入れながら成長を続けていくと確信している」hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-59228009921951717172018-11-19T12:26:00.001+09:002018-11-19T12:26:11.698+09:00AIモデルをワンクリックで展開できるOSS「Athena」が登場<div class="WordSection1"> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:16.5pt"> <span style="font-size:10.5pt;font-family:"MS 明朝","serif";color:black"> <span lang="EN-US">The Linux Foundation</span>傘下の<span lang="EN-US">LF Deep Learning Foundation</span>は<span lang="EN-US">2018</span>年<span lang="EN-US">11</span>月<span lang="EN-US">14</span>日、<span lang="EN-US">AI</span>モデル向けのオープンソースソフトウェア(<span lang="EN-US">OSS</span>)「<span lang="EN-US">Athena</span>」を発表した。同団体が主催する<span lang="EN-US">Acumos AI</span>プロジェクトがリリースした初めてのソフトウェアであり、<span lang="EN-US">Docker</span>のコンテナとして作成した<span lang="EN-US">AI</span>モデルをワンクリックで展開できるなどの特徴を持つ。<span lang="EN-US"><o:p></o:p></span></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:16.5pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:10.5pt;font-family:"MS 明朝","serif";color:black"> <span lang="EN-US">Acumos AI</span>は、<span lang="EN-US">AI</span>アプリケーションの構築や共有、展開を容易にする、オープンソースのフレームワーク。特定のモデリング言語やツールキットには依存せず、<span lang="EN-US">AI</span>環境を運用するために必要なインフラストラクチャスタックとコンポーネントを標準化することが目的だ。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-family:"MS 明朝","serif";color:black"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-CBDpwUb3VGVD49VQNS84bO-UhdCqVqAIEcleZWgQq4je0_O8zrZUAfaSm457TupSBxnl0uHP0zmi42aFW5Q5L_DGA_VcCXV_isEAn8yzYag8UTPXKrrgfRfTZQGicsUCca9w5q4oRN7k/s1600/image001-771737.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg-CBDpwUb3VGVD49VQNS84bO-UhdCqVqAIEcleZWgQq4je0_O8zrZUAfaSm457TupSBxnl0uHP0zmi42aFW5Q5L_DGA_VcCXV_isEAn8yzYag8UTPXKrrgfRfTZQGicsUCca9w5q4oRN7k/s320/image001-771737.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6625407864439444786" /></a></span><span lang="EN-US" style="font-family:"MS 明朝","serif";color:black"> <br> </span><span lang="EN-US" style="font-family:"MS 明朝","serif";color:#333333">Acumos AI</span><span style="font-family:"MS 明朝","serif";color:#333333">プロジェクトの目標(<span lang="EN-US"><a href="https://wiki.acumos.org/display/AC/Acumos+Wiki" target="_blank"><span lang="EN-US"><span lang="EN-US">出典:Acumos Wiki</span></span></a></span>)</span><span lang="EN-US" style="font-family:"MS 明朝","serif";color:black"><o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:16.5pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:10.5pt;font-family:"MS 明朝","serif";color:black"> <span lang="EN-US">Athena</span>は、<span lang="EN-US">Acumos AI</span>を利用して構築したアプリケーションの展開や共有を容易にする。具体的には以下のような機能を備える。<span lang="EN-US"><o:p></o:p></span></span></p> <ol start="1" type="1"> <li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;mso-list:l0 level1 lfo1"> <span lang="EN-US" style="font-family:"MS 明朝","serif"">Docker</span><span style="font-family:"MS 明朝","serif"">や<span lang="EN-US">Kubernetes</span>を利用して作成したコンテナをワンクリックで展開する<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;mso-list:l0 level1 lfo1"> <span style="font-family:"MS 明朝","serif"">クラウドやオンプレミスサーバ、仮想マシンなどを問わず、ユーザーが運用している<span lang="EN-US">Kubernetes</span>環境内に<span lang="EN-US">AI</span>モデルをデプロイする<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;mso-list:l0 level1 lfo1"> <span style="font-family:"MS 明朝","serif"">複数の<span lang="EN-US">AI</span>モデルやデータ変換ツール、フィルター、出力アダプターを、<span lang="EN-US">GUI</span>を使って接続する「デザインスタジオ」<span lang="EN-US"><o:p></o:p></span></span></li><li class="MsoNormal" style="color:black;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;mso-list:l0 level1 lfo1"> <span style="font-family:"MS 明朝","serif"">セキュリティトークンを使って、外部のツールキットから<span lang="EN-US">Acumos AI</span>のリポジトリに<span lang="EN-US">AI</span>モデルを搭載する<span lang="EN-US"><o:p></o:p></span></span></li></ol> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:16.5pt;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:10.5pt;font-family:"MS 明朝","serif";color:black"> <span lang="EN-US">Acumos AI</span>は、<span lang="EN-US">2019</span>年中ごろを予定している次のリリースに向けた開発に既に着手しているという。次期リリースでは、<span lang="EN-US">AI</span>モデルの柔軟性を高めるデータ抽出パイプラインやモデルトレーニングなどを導入するとしている。<span lang="EN-US"><o:p></o:p></span></span></p> <p class="MsoPlainText"><span lang="EN-US" style="font-size:10.5pt;font-family:"MS 明朝","serif""><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-60544800939240155712018-11-11T23:17:00.001+09:002018-11-11T23:17:42.835+09:00Amazon Auroraの先進性を誰も解説してくれないから解説する<div class="WordSection1"> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <div> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm"><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333">TL;DR;<o:p></o:p></span></h1> </div> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Amazon Aurora</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">In-Memory DB</span><span style="color:#333333">でもなく</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Disk-Oriented DB</span><span style="color:#333333">でもなく、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">In-KVS DB</span><span style="color:#333333">とでも呼ぶべき新地平に立っている。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">その斬新さたるやマスターのメインメモリはキャッシュでありながら</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Write-Back</span><span style="color:#333333">でもなく</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Write-Through</span><span style="color:#333333">でもないという驚天動地。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ついでに従来のチェックポイント処理も不要になったのでスループットも向上した。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">詳細が気になる人はこの記事をチェキ!</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333">Amazon Aurora<o:p></o:p></span></h1> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://aws.amazon.com/jp/rds/aurora/" target="_blank"><span style="color:#6200AC">Amazon Aurora</span></a></span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">の中で利用可能なマネージド</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">=運用を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">が面倒見てくれる</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">なデータベースサービス。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">ユーザーからはただの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">MySQL</span><span style="color:#333333">、もしくは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">として扱う事ができるのでそれらに依存する既存のアプリケーション資産をそのまま利用する事ができて、落ちたら再起動したりセキュリティパッチをダウンタイムなしで</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(!?)</span><span style="color:#333333">適用したりなどなどセールストークを挙げだすとキリがないけど、僕は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">からお金を貰っているわけではないのでそこは控えめにして</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">でのトランザクションの永続性について</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://dl.acm.org/citation.cfm?id=3056101" target="_blank"><span lang="EN-US" style="font-family:"MS Pゴシック",sans-serif;color:#6200AC"><span lang="EN-US">論文</span></span></a></span><span style="color:#333333">から分かる範囲と想像で補った内容を説明していく。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="font-size:19.0pt;color:#333333">のアーキテクチャ</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">の公式資料を取ってこればいくらでもそれっぽい図はあるが、説明に合わせて必要な部分だけ切りだした。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AZ</span><span style="color:#333333">とは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Availability Zone</span><span style="color:#333333">の事で、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">のデータセンターで障害が発生した場合に別の故障単位になるよう設計されているユニットの事である。物理的には部屋が分かれているのか建物が分かれているのかわからないが、電源やスイッチは確実に系統が分かれておりミドルウェアのバージョンアップなども分かれているという。それをまたがる形で</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">が一つと</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">が複数</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">最大</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">15</span><span style="color:#333333">台</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">立ち上がる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">に対する読み書き両方ができるが、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">は読み出ししかできない。典型的な</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Web</span><span style="color:#333333">サービスは読み出しが負荷の多くを占めるので読み出し可能な複製が複数用意できるのは理に適っている。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">このそれぞれのコンポーネントを繋ぐ矢印は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-Log</span><span style="color:#333333">を表している。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-Log</span><span style="color:#333333">とは「特定のページを書き換える操作とその内容」が記述された</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">ログの最小単位である。一般に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">を複製すると言うと読み書きされるあらゆるデータが複製されるものであるが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">ではこの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-Log</span><span style="color:#333333">しか複製しない点が面白い。論文中に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><code><span lang="EN-US" style="font-family:Consolas;color:#333333;background:#EEEEEE">THE LOG IS THE DATABASE</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">とでっかく書いてあるのは恐らくこの辺に由来する。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">は普通の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">MySQL(</span><span style="color:#333333">もしくは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PostgreSQL)</span><span style="color:#333333">サーバのように見えユーザから読み書きがリクエストできる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> InnoDB</span><span style="color:#333333">の代わりのバックエンドのデータストアとして分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">が稼働しており、その分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AZ</span><span style="color:#333333">を跨った</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">6</span><span style="color:#333333">多重に冗長化されている。論文中では</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">だなんて一言も書いていないがストレージバックエンドの説明として理解しやすいのであえて</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">に喩えて説明していく。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> 6</span><span style="color:#333333">多重のうち</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">4</span><span style="color:#333333">つにまで保存できた段階で永続化完了と見なしユーザに返答する事でレイテンシの短縮を図っている。システムはいろんなノイズで遅れるが、全体の足を引っ張って律速するは決まって</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">struggler</span><span style="color:#333333">であり、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">90</span><span style="color:#333333">パーセンタイルぐらいであれば圧倒的に機敏に返事を返してくるのは巨大システムの常である。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">全部の複製が全く同じ情報を持っていないといけないので、仮にログを取りこぼした複製がいたとしても</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">に聞き直さず複製同士で</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Gossip</span><span style="color:#333333">通信を行って全部のログを全員が受け取るように取り計らう。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">この辺の話は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">の人の公式スライドにも腐るほど出てくるので僕は詳しく説明しない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:19.0pt;color:#333333">トランザクションの挙動の違い</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">どれかの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">にとって極端に都合が良いワークロードで比較しても単なるセールストークにしかならない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">複数の方式の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">が明白に異なる挙動をする典型例のワークロードとして「巨大テーブルの全部の行の特定のフラグを立てる」というトランザクションを例に挙げて伝統的な</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Disk-Oriented DB</span><span style="color:#333333">・</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">In-Memory DB</span><span style="color:#333333">・</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">の動作を順に説明する。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> SQL</span><span style="color:#333333">文としてはこんな感じである。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="margin-left:-24.0pt;margin-top:18.0pt;margin-right:-24.0pt;margin-bottom:18.0pt;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <div> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">UPDATE</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">table1</span> </span><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">SET</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">flag</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">true</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">;</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">なおこの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">table1</span><span style="color:#333333">はものすごく行数が多い(=縦に長い)とする。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333">Disk-Oriented DB</span><span style="font-size:17.0pt;color:#333333">の挙動</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">まず巨大テーブル全体を一気にメモリに置くアーキテクチャにはなっておらず、メモリ上に用意したデータベースページ領域に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Disk</span><span style="color:#333333">上の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">の一部を複製してくる所から始まる。ここまでは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">MySQL</span><span style="color:#333333">でも</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">でも同じはず。この文脈でのページとは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">の中身の一部が</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(MySQL</span><span style="color:#333333">ならデフォルトで</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)16KB</span><span style="color:#333333">の大きさ毎に詰め込まれた連続したメモリ領域であり、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">OS</span><span style="color:#333333">が提供するメモリぺージとは少し違う。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">ちなみに</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">のデフォルトページサイズは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">8KB</span><span style="color:#333333">)</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Disk</span><span style="color:#333333">上の全域データを直接一瞬で書き換えることは当然できないので、狭いメモリ空間で</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">LRU</span><span style="color:#333333">等を用いて取り回しながら書き込みの終わった未コミットなダーティページをディスクに書き戻しながら進行する他ない</span><sup id="fnref1"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://qiita.com/kumagi/items/67f9ac0fb4e6f70c056d#fn1" title="気合の入ったDBならLRUではなくて二重底なvictim付きのページ管理機構にすることで単なるフルスキャンがバッファプール全部を追い出す状況を作らないように頑張ったりするがそれは今回は話さない)"><span style="color:#6200AC">1</span></a></span></sup><span style="color:#333333">。だがそんなことをすると、その瞬間に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">のプロセスが強制終了してリスタートした時に未コミットなダーティページがディスク上から読み出し可能な状態で観測される恐れがある。それでは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ACID</span><span style="color:#333333">のうち</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">A</span><span style="color:#333333">に違反してしまう。そこで各</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">は僕の知る限り以下の挙動をとる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:14.5pt;font-family:"Segoe UI",sans-serif;color:#333333">ARIES<o:p></o:p></span></h4> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">進行しながら</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-Undo log</span><span style="color:#333333">をディスクに永続化し、もし途中でシステムがリスタートした時はリカバリとして</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Undo</span><span style="color:#333333">処理を行う。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> <br> </span><span style="color:#333333">この図で言うとページ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">は未コミットなトランザクションによって既に書き換えられているが、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Undo-Redo Log</span><span style="color:#333333">の形で既に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">WAL</span><span style="color:#333333">を永続化しているのでリカバリ可能でありダーティなページはそのままディスクに永続化して構わない。なので永続化して空けた</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Buffer Pool</span><span style="color:#333333">のスペースに次に更新したいページ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">5</span><span style="color:#333333">をフェッチしてくる事ができる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:14.5pt;font-family:"Segoe UI",sans-serif;color:#333333">PostgreSQL<o:p></o:p></span></h4> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333"> 上書きは常に新たなバージョンでの追記操作であり、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">clog</span><span style="color:#333333">というデータで保存されているトランザクションステータスが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><code><span lang="EN-US" style="font-family:Consolas;color:#333333;background:#EEEEEE">commited</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">でない限り読み出しできない。したがって痕跡は物理的にページに残るがデータベースのユーザからは不可視であり問題にならず、いずれバキュームされて物理的にも消失する。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">この図でいうと、ページ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">は物理的にはダーティだが追記がされているだけであり</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">clog</span><span style="color:#333333">のお陰で論理的に他のトランザクションから見えない。なのでそのままディスクに永続化されても問題が発生しないのでこうしてバッファプールからそのままページ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">を追い出して、空いた領域にページ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">5</span><span style="color:#333333">をフェッチしてくる事ができる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:14.5pt;font-family:"Segoe UI",sans-serif;color:#333333">MySQL<o:p></o:p></span></h4> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ibdata</span><span style="color:#333333">の中に更新前の値が保存されており、ディスクに書き戻される際にはそちらも永続化されるので、リスタート時のリカバリ処理で</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ibdata</span><span style="color:#333333">とテーブルデータを突き合わせて可視なデータがユーザから見えるように整合性を保つ(詳しくないが多分)。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">いずれにせよ、トランザクションが走りながらログを記述していく事は共通している。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333">In-Memory DB</span><span style="font-size:17.0pt;color:#333333">の挙動</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">全部のデータがメモリに収まる前提を置いて良いのでこちらはだいぶシンプルに収まる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">進行途中でログを書き出す必要は無いし、バッファの中で</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">LRU</span><span style="color:#333333">等を用いてどのページをディスクに書き戻すかなども心配しなくてよい。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">トランザクションログを書き出すタイミングは典型的な実装としてはコミット時に一気に書き出す事が多いようだ。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">リスタート時はログデータをスキャンしてデータベースを再構築するので、ユーザから</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><code><span lang="EN-US" style="font-family:Consolas;color:#333333;background:#EEEEEE">commit</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">が命じられていないトランザクションはログにすら残っておらず、ダーティページはそもそも概念が存在しない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="font-size:17.0pt;color:#333333">の挙動</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">メモリにもローカルのディスクにもテーブル全体が入りきらない前提で設計されている。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">トランザクションの都合上必要なページが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">のメモリで運良くキャッシュできていない場合、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">に問い合わせを行いページを持ってくる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">なお、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">は物理的には</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">6</span><span style="color:#333333">多重で保存しているが論理的には一つのデータが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">6</span><span style="color:#333333">重に保存されているだけなので論理的には</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">つのストレージ領域と考えて良い</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(RAID1</span><span style="color:#333333">を論理的には単一の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">HDD</span><span style="color:#333333">扱いするのと同様</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">のでそう書く。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">走りながら当然ログも永続化していく。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">6</span><span style="color:#333333">多重で保存されるのはログも同じだ。前述したように驚くべき事に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-log</span><span style="color:#333333">しか保存していかない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">当然</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">のメモリには全データ乗らないので、どうにかして処理用にメモリを取り回す必要がある。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">そこで</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">は一番使わないと判断したページを</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">に書き戻</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">…</span><span style="color:#333333">さずに<strong><span style="font-family:"MS Pゴシック",sans-serif">捨てる</span></strong>。 もう一度言う、<strong><span style="font-family:"MS Pゴシック",sans-serif">捨てる</span></strong>のだ、キャッシュなのに。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">そんなことをしたら</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">に載ったページは古いままじゃないかと心配になるが、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">の分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">は単なるストレージではなくて</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">用の専用のロジックが駆動するインテリジェントな分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">である。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">こいつらは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">から受け取った</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-Log</span><span style="color:#333333">を必要に応じて手元のページに適用</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(Apply)</span><span style="color:#333333">していく事ができる</span><sup id="fnref2"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://qiita.com/kumagi/items/67f9ac0fb4e6f70c056d#fn2" title="この処理を6多重全部でやると重いので実は一部のマシンでしかこのApply操作はしないらしい。"><span style="color:#6200AC">2</span></a></span></sup><span style="color:#333333">。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">なんでせっかく作った更新済み</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Page1</span><span style="color:#333333">を捨ててまで新たに</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">側でログを適用し直すかというと、基本的に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">AWS</span><span style="color:#333333">において</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">CPU</span><span style="color:#333333">やネットワーク資源は限られたリソースである一方、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">側の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">CPU</span><span style="color:#333333">は相対的に持て余したリソースであり安いこと。さらには後に述べるチェックポイントの簡潔さのために完全に分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">側に倒した設計を行っているように見える。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> Master</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">へは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-log</span><span style="color:#333333">しか流れないし、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">へはページしか流れない。圧倒的にシステムが簡単になった。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">がページを問い合わせる場合、バージョン番号もセットで問い合わせるのでそこまでに投げつけた</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-log</span><span style="color:#333333">を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">側で適用した最新ホカホカのページが返ってくるので</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">は手元のメモリに乗っているダーティなページを気兼ねなく任意のタイミングで捨てて構わない。問い合わせの際はトランザクションの識別子を入れて引いてくるので、読んではいけない</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Dirty</span><span style="color:#333333">なページを獲得することはない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">がページを問い合わせる場合は必ず永続化されたバージョンのものだけを読むようにしている。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">ついでに言うと</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">のページは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">が</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">6</span><span style="color:#333333">多重な分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">の他に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">にも</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-log</span><span style="color:#333333">を投げつける。それを受け取るたびに</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">恐らく</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">と同じようなロジックで</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">ログ適用を行い、最新のコミット済みデータが読めるようになっている。ここで気づいた人もいると思うが、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">にログを共有するがその完了を待つとは一言も書いていない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">4/6</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">永続化が完了した時点でユーザにコミットを報告してしまう。なので</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">側で更新を確認したデータが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">側で読めるようになるには若干のタイムラグが発生する可能性がある。いわゆる</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://qiita.com/kumagi/items/3867862c6be65328f89c#sequential-consistency"><span style="color:#6200AC">Sequential Consistency</span></a></span><span style="color:#333333">である。ミリ秒オーダーなので</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">HTTP</span><span style="color:#333333">な</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Web</span><span style="color:#333333">サービスの文脈で大問題になるケースは稀だが覚えておいた方がいいかも知れない。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:19.0pt;color:#333333">チェックポイントの挙動の違い</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">はシステム全体で見ると、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">がせっかく更新したページをそのまま複製せずに</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">がログリプレイして再構築する分</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">CPU</span><span style="color:#333333">クロックは無駄になっている。しかし、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">はページを書き戻す必要が無くなり、更に言うと</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">がチェックポイント処理をする必要もなくなった。なぜならチェックポイント処理は分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">側で継続的にページ単位で実施されているからだ。なんだこれは。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">In-MemoryDB</span><span style="color:#333333">でも</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Disk-Oriented DB</span><span style="color:#333333">とも違うチェックポイントアーキテクチャだ。それぞれのチェックポイント戦略をここに列挙する。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ARIES: </span><code><span lang="EN-US" style="font-size:12.0pt;font-family:Consolas;color:#333333;background:#EEEEEE">Checkpoint-Begin</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">WAL</span><span style="color:#333333">に書いてからその瞬間の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Dirty Page Table</span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Transaction Table</span><span style="color:#333333">を保存して、リスタート時の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-Log</span><span style="color:#333333">適用開始ポイントを算出可能にする。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">MySQL: </span><span style="color:#333333">ダーティなページをディスクに書き出す。ページの境界とブロックストレージのページ境界が一致しない事のほうが普通なのでチェックポイント中に電源が落ちたらページの一部が中途半端に永続化されてしまう。そこで二度書く事によってアトミック性を達成する(</span><code><span lang="EN-US" style="font-size:12.0pt;font-family:Consolas;color:#333333;background:#EEEEEE">Double Write</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">と呼ぶ)。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PostgreSQL: </span><span style="color:#333333">ダーティなページをディスクに書き出す。ページの境界とブロックストレージのページ境界が一致しない事のほうが普通なのでチェックポイント中に電源が落ちたらページの一部が中途半端に永続化されてしまう。そこでそのチェックポイント後に最初にそのページに触る</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">WAL</span><span style="color:#333333">の中にページ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">デフォルトで</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">8KB)</span><span style="color:#333333">を丸っと埋め込んで完全性を保障する</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><code><span lang="EN-US" style="font-size:12.0pt;font-family:Consolas;color:#333333;background:#EEEEEE">Full Page Write</span></code><span style="color:#333333">と呼ぶ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">In-Memory DB: </span><span style="color:#333333">どこかのタイミングで</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://www.usenix.org/system/files/conference/osdi14/osdi14-paper-zheng_wenting.pdf" target="_blank"><span lang="EN-US" style="font-family:"游ゴシック",sans-serif;color:#6200AC"><span lang="EN-US">メモリの内容をモリッとディスクに書き出してリスタート時に整合性を直す</span></span><span style="color:#6200AC">SiloR</span></a></span><span style="color:#333333">とか、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="http://www.hpl.hp.com/techreports/2015/HPL-2015-37.html" target="_blank"><span lang="EN-US" style="font-family:"游ゴシック",sans-serif;color:#6200AC"><span lang="EN-US">ログを並列スキャンして完全なイメージを生成する</span></span><span style="color:#6200AC">FOEDUS</span></a></span><span style="color:#333333">とか戦略はまだ多岐に渡っている。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora: </span><span style="color:#333333">バックエンドの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">ストレージが自動でログを適用していく。ページごとにログバッファが付いてて、バッファの長さがしきい値を超えるたびにページへのログ適用が実施される。ログは未コミットのトランザクションの進行中のログも含むが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">がリスタートしている時点でそのトランザクションはそれ以上進むはずがないのでログを切り詰める</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(Truncate)</span><span style="color:#333333">。その際には最新の永続化済みのコミット完了の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">LSN</span><span style="color:#333333">まで復旧する。なおこの復旧処理は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">が元気に進行している最中であってもバックグラウンドで良しなに実行される。ここのバックグラウンド処理とチェックポイントに差がないのが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">の学術的新規性の一つだと思う。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo-log</span><span style="color:#333333">リプレイ機能付き分散ストレージがいればチェックポイントに係る複雑さが一気に解決できる。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">ベンチマーク結果</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="http://www.allthingsdistributed.com/files/p1041-verbitski.pdf" target="_blank"><span lang="EN-US" style="font-family:"MS Pゴシック",sans-serif;color:#6200AC"><span lang="EN-US">論文</span></span></a></span><span style="color:#333333">から抜粋すると</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> <br> </span><span style="color:#333333">大きめのインスタンスの場合に性能向上の伸びしろが大きいようだ。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:21.5pt;color:#333333">その他</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h1> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:19.0pt;color:#333333">なんか他に工夫ないの</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ログ処理周りは大胆に手が加えられており、中でも感心したのは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://qiita.com/kumagi/items/57afb89953ff35e91244#flush-pipelining"><span style="color:#6200AC">Flush Pipelining</span></a></span><span style="color:#333333">が実装されている。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> </span><span style="color:#333333">通常、ログが永続化されるのを待つにはロガーにログ内容を渡して、完了が報告されるまでセマフォなどで寝るのが典型的な実装パターンである。しかし</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">ではロガーにログ内容を渡した後に「終わったらクライアントに完了を報告せよ」とキューに依頼を投げ込むだけで、そのスレッドは即座に次のリクエストを捌く処理に移行する。キューの中身を確認する専用のスレッドが居て、新たに永続化されたログの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">LSN</span><span style="color:#333333">とキューに登録された依頼を見比べて、永続化されたコミットの完了をクライアントに代理で報告する。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> PostgreSQL</span><span style="color:#333333">でも</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">pgbench</span><span style="color:#333333">でベンチマークを取ってイジメてみるとすぐにセマフォ処理近辺がボトルネックになるので</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">を真似てこの辺弄っても良さそうな気がするが大改造になるのでコミュニティには歓迎されない気がする。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333">Aurora Multi-Master</span><span style="font-size:19.0pt;color:#333333">ってどうなの</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">この論文で解説されてる仕組みだと</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">LSN</span><span style="color:#333333">の発行からして複数台のマシンからやってダメなのでログのフォーマットのレベルで改造が加えられてそうな気がする。詳しくは動画で</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><br> <a href="https://www.youtube.com/watch?time_continue=2620&v=rPmKo2g9znA" target="_blank"><span style="color:#6200AC">https://www.youtube.com/watch?time_continue=2620&v=rPmKo2g9znA</span></a><br> </span><span style="color:#333333">どうやらパーティション単位で「テーブルのこの範囲はサーバ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">A</span><span style="color:#333333">がリーダーね!」的に分割統治して</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">を複数用意するようだ。そして自分が</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">じゃないテーブルには一応書き込めるが最終的には調停者が決定するとの事である。更新が競合している場合は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Write</span><span style="color:#333333">性能は上がらないが競合していない場合は性能はよく伸びるらしい。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:19.0pt;color:#333333">どんな更新がこれから来るかな</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">側の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">CPU</span><span style="color:#333333">が安くて空いていて、そいつが保存しているページ内容に対して</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">redo-log</span><span style="color:#333333">を適用できる程度に中身を解釈して動いているので、そいつらに集計系クエリを実行させるのはコストメリットが良さそう。貧者の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">OLAP</span><span style="color:#333333">として</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">JOIN</span><span style="color:#333333">が苦手な</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">実装がクローズドな世界に君臨する可能性はあると思っている。もしくは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">redo-log</span><span style="color:#333333">を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redshift</span><span style="color:#333333">にそのまま投げつけていって</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">の一つとして稼働するようになるとか。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:21.5pt;color:#333333">まとめ</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h1> </div> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Aurora</span><span style="color:#333333">は投げつけられた</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Redo</span><span style="color:#333333">ログをストレージ側でバックグラウンドで適用できるから</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Master</span><span style="color:#333333">の負担が減った。なので性能が伸びるようになった。</span><span lang="EN-US" style="font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">インテリジェントな分散ストレージすげーな!</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">これを設計した</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Amazon</span><span style="color:#333333">の中の人は確実に「分散システムの肌感覚</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(Struggler</span><span style="color:#333333">対策とかシングルマスター構成とか</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">」「</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Disk-Oriented DB</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ACID</span><span style="color:#333333">保障の裏側</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">新しい</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="color:#333333">ページ一貫性保障プロトコル設計</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">」「</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Web</span><span style="color:#333333">アプリプログラマの需要</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(Web</span><span style="color:#333333">の文脈では</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Slave</span><span style="color:#333333">の厳密な一貫性までは必要としない事</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">」「クラウドのリソース感覚</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">(</span><span style="color:#333333">分散</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">KVS</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">CPU</span><span style="color:#333333">は遊んでいるリソースだから活用すべき</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">)</span><span style="color:#333333">」の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">4</span><span style="color:#333333">つ全てについて確実に僕より深い造詣と生きた知識を持っている。恐るべし。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <p class="MsoNormal" style="mso-margin-top-alt:36.0pt;margin-right:0mm;margin-bottom:36.0pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihTt-JGTZeSgE0gqNxp_JJwUgHukRO3lyEYHy1H2v3XAK3J4aBmWTQ16U7oRHl2OalWylBYJbNwDQ9KV4SXVRObHjSg0fSqMB8KmT7_KXyzBeBqk_sSpD8xdQodFB5qBm_ReAgBGhXFOq1/s1600/1C5594D9AD8548848F1A885592D6BA13-762877.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihTt-JGTZeSgE0gqNxp_JJwUgHukRO3lyEYHy1H2v3XAK3J4aBmWTQ16U7oRHl2OalWylBYJbNwDQ9KV4SXVRObHjSg0fSqMB8KmT7_KXyzBeBqk_sSpD8xdQodFB5qBm_ReAgBGhXFOq1/s320/1C5594D9AD8548848F1A885592D6BA13-762877.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6622607074850743170" /></a></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;text-indent:-18.0pt;mso-list:l3 level1 lfo4;background:white;box-sizing: inherit"> <![if !supportLists]><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;color:#333333">気合の入った</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333">DB</span><span style="font-size:11.0pt;color:#333333">なら</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333">LRU</span><span style="font-size:11.0pt;color:#333333">ではなくて二重底な</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333">victim</span><span style="font-size:11.0pt;color:#333333">付きのページ管理機構にすることで単なるフルスキャンがバッファプール全部を追い出す状況を作らないように頑張ったりするがそれは今回は話さない)</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"> <a href="https://qiita.com/kumagi/items/67f9ac0fb4e6f70c056d#fnref1"><span style="font-family:"Segoe UI Emoji",sans-serif;color:#6200AC">↩</span></a><o:p></o:p></span></p> <p style="mso-margin-top-alt:12.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;text-indent:-18.0pt;mso-list:l3 level1 lfo4;background:white;box-sizing: inherit"> <![if !supportLists]><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;color:#333333">この処理を</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333">6</span><span style="font-size:11.0pt;color:#333333">多重全部でやると重いので実は一部のマシンでしかこの</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333">Apply</span><span style="font-size:11.0pt;color:#333333">操作はしないらしい。</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><a href="https://qiita.com/kumagi/items/67f9ac0fb4e6f70c056d">https://qiita.com/kumagi/items/67f9ac0fb4e6f70c056d</a><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-88430789504763032332018-11-11T23:02:00.001+09:002018-11-11T23:02:12.201+09:00When Should I Use Amazon Aurora and When Should I use RDS MySQL?<div class="WordSection1"> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Now that Database-as-a-service (DBaaS) is in high demand, there is one question regarding AWS services that cannot always be answered easily : <strong><i><span style="font-family:"Chivo",serif">When should I use Aurora and when RDS MySQL</span></i></strong>?<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">DBaaS cloud services allow users to use databases without configuring physical hardware and infrastructure, and without installing software. I'm not sure if there is a straightforward answer, but when trying to find out which solution best fits an organization there are multiple factors that should be taken into consideration. These may be performance, high availability, operational cost, management, capacity planning, scalability, security, monitoring, etc.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">There are also cases where although the workload and operational needs seem to best fit to one solution, there are other limiting factors which may be blockers (or at least need special handling).<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">In this blog post, I will try to provide some general rules of thumb but let's first try to give a short description of these products.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">What we should really compare is the MySQL and Aurora database engines provided by Amazon RDS.<o:p></o:p></span></p> <h4 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:42.0pt;line-height:20.25pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:15.0pt;font-family:"Chivo",serif;color:#1D2127;font-weight:normal">An introduction to Amazon RDS<o:p></o:p></span></h4> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Amazon Relational Database Service (Amazon RDS) is a hosted database service which provides multiple database products to choose from, including Aurora, PostgreSQL, MySQL, MariaDB, Oracle, and Microsoft SQL Server. We will focus on MySQL and Aurora.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">With regards to systems administration, both solutions are time-saving. You get an environment ready to deploy your application and if there are no dedicated DBAs, RDS gives you great flexibility for operations like upgrades or backups. For both products, Amazon applies required updates and the latest patches without any downtime. You can define maintenance windows and automated patching (if enabled) will occur within them. Data is continuously backed up to S3 in real time, with no performance impact. This eliminates the need for backup windows and other, complex or not, scripted procedures. Although this sounds great, the risk of vendor lock-in and the challenges of enforced updates and client-side optimizations are still there.<o:p></o:p></span></p> <h4 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:42.0pt;line-height:20.25pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:15.0pt;font-family:"Chivo",serif;color:#1D2127;font-weight:normal">So, Aurora or RDS MySQL?<o:p></o:p></span></h4> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <strong><span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Amazon Aurora</span></strong><span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777"> is a relational, proprietary, closed-source database engine, with all that that implies.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <strong><span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">RDS MySQL</span></strong><span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777"> is 5.5, 5.6 and 5.7 compatible and offers the option to select among minor releases. While RDS MySQL supports multiple storage engines with varying capabilities, not all of them are optimized for crash recovery and data durability. Until recently, it was a limitation that Aurora was only compatible with MySQL 5.6 but it's now compatible with both 5.6 and 5.7 too.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">So, in most cases, no significant application changes are required for either product. Keep in mind that certain MySQL features like the MyISAM storage engine are not available with Amazon Aurora. <a href="https://www.percona.com/blog/2018/04/02/migrate-to-amazon-rds-with-percona-xtrabackup/" target="_blank"><span style="color:#E97E03">Migration to RDS</span></a> can be performed using <a href="https://www.percona.com/software/mysql-database/percona-xtrabackup" target="_blank"><span style="color:#E97E03">Percona XtraBackup</span></a>.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">For RDS products shell access to the underlying operating system is disabled and access to MySQL user accounts with the "SUPER" privilege isn't allowed. To configure MySQL variables or manage users, Amazon RDS provides specific parameter groups, APIs and other special system procedures which be used. If you need to enable remote access this article will help you do so <a href="https://www.percona.com/blog/2018/05/08/how-to-enable-amazon-rds-remote-access/" target="_blank"><span style="color:#E97E03">https://www.percona.com/blog/2018/05/08/how-to-enable-amazon-rds-remote-access/</span></a><o:p></o:p></span></p> <h5 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:84.0pt;line-height:13.5pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Chivo",serif;color:#1D2127">Performance considerations<o:p></o:p></span></h5> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Although Amazon RDS uses SSDs to achieve better IO throughput for all its database services, Amazon claims that the Aurora is able to achieve a 5x performance boost than standard MySQL and provides reliability out of the box. In general, Aurora seems to be faster, but not always.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">For example, due to the need to disable the InnoDB change buffer for Aurora (this is one of the keys for the distributed storage engine), and that updates to secondary indexes must be write through, there is a big performance penalty in workloads where heavy writes that update secondary indexes are performed. This is because of the way MySQL relies on the change buffer to defer and merge secondary index updates. If your application performs a high rate of updates against tables with secondary indexes, Aurora performance may be poor. In any case, you should always keep in mind that performance depends on schema design. Before taking the decision to migrate, performance should be evaluated against an application specific workload. Doing extensive benchmarks will be the subject of a future blog post.<o:p></o:p></span></p> <h5 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:84.0pt;line-height:13.5pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Chivo",serif;color:#1D2127">Capacity Planning<o:p></o:p></span></h5> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Talking about underlying storage, another important thing to take into consideration is that with Aurora there is no need for capacity planning. Aurora storage will automatically grow, from the minimum of 10 GB up to 64 TiB, in 10 GB increments, with no impact on database performance. The table size limit is only constrained by the size of the Aurora cluster volume, which has a maximum of 64 tebibytes (TiB). As a result, the maximum table size for a table in an Aurora database is 64 TiB. For RDS MySQL, the maximum provisioned storage limit constrains the size of a table to a maximum size of 16 TB when using InnoDB file-per-table tablespaces.<o:p></o:p></span></p> <h5 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:84.0pt;line-height:13.5pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Chivo",serif;color:#1D2127">Replication<o:p></o:p></span></h5> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Replication is a really powerful feature of MySQL (like) products. With Aurora, you can provision up to fifteen replicas compared to just five in RDS MySQL. All Aurora replicas share the same underlying volume with the primary instance and this means that replication can be performed in milliseconds as updates made by the primary instance are instantly available to all Aurora replicas. Failover is automatic with no data loss on Amazon Aurora whereas the replicas failover priority can be set.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">An explanatory description of Amazon Aurora's architecture can be found in Vadim's post written a couple of years ago <a href="https://www.percona.com/blog/2015/11/16/amazon-aurora-looking-deeper/" target="_blank"><span style="color:#E97E03">https://www.percona.com/blog/2015/11/16/amazon-aurora-looking-deeper/</span></a><o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">The architecture used and the way that replication works on both products shows a really significant difference between them. Aurora is a High Availablity (HA) solution where you only need to attach a reader and this automatically becomes <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html" target="_blank"><span style="color:#E97E03">Multi-AZ</span></a> available. Aurora replicates data to six storage nodes in Multi-AZs to withstand the loss of an entire AZ (Availability Zone) or two storage nodes without any availability impact to the client's applications.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">On the other hand, RDS MySQL allows only up to five replicas and the replication process is slower than Aurora. Failover is a manual process and may result in last-minute data loss. RDS for MySQL is not an HA solution, so you have to mark the master as Multi-AZ and attach the endpoints.<o:p></o:p></span></p> <h5 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:84.0pt;line-height:13.5pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Chivo",serif;color:#1D2127">Monitoring<o:p></o:p></span></h5> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Both products can be monitored with a variety of monitoring tools. You can enable automated monitoring and you can define the log types to publish to Amazon CloudWatch. <a href="https://www.percona.com/blog/2017/12/28/monitoring-amazon-aurora-pmm/" target="_blank"><span style="color:#E97E03">Percona Monitoring and Management (PMM)</span></a> can also be used to gather metrics.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Be aware that for Aurora there is a limitation for the T2 instances such that Performance Schema can cause the host to run out of memory if enabled.<o:p></o:p></span></p> <h5 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:84.0pt;line-height:13.5pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Chivo",serif;color:#1D2127">Costs<o:p></o:p></span></h5> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Aurora instances will cost you ~20% more than RDS MySQL. If you create Aurora read replicas then the cost of your Aurora cluster will double. Aurora is only available on certain RDS instance sizes. Instances pricing details can be found <a href="https://aws.amazon.com/rds/aurora/pricing/" target="_blank"><span style="color:#E97E03">here</span></a> and <a href="https://aws.amazon.com/rds/mysql/pricing/" target="_blank"><span style="color:#E97E03">here.</span></a><o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Storage pricing may be a bit tricky. Keep in mind that pricing for Aurora differs to that for RDS MySQL. For RDS MySQL you have to select the type and size for the EBS volume, and you have to be sure that provisioned EBS IOPs can be supported by your instance type as EBS IOPs are restricted by the instance type capabilities. Unless you watch for this, you may end up having EBS IOPs that cannot be really used by your instance.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">For Aurora, IOPs are only limited by the instance type. This means that if you want to increase IOPs performance on Aurora you should proceed with an instance type upgrade. In any case, Amazon will charge you based on the dataset size and the requests per second.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">That said, although for Aurora you pay only for the data you really use in 10GB increments if you want high performance you have to select the correct instance. For Aurora, regardless of the instance type, you get billed $0.10 per GB-month and $0.20 per 1 million requests so if you need high performance the cost maybe even more than RDS MySQL. For RDS MySQL storage costs are based on the EBS type and size.<o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">Percona provides <a href="https://www.percona.com/services/managed-services/percona-dba-service-amazon-aurora-rds" target="_blank"><span style="color:#E97E03">support for RDS services</span></a> and you might be interested in these cases studies:<o:p></o:p></span></p> <ul type="disc"> <li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l0 level1 lfo1;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif"><a href="https://www.percona.com/about-percona/case-studies/lookout-percona-AWS-cloud-expertise-reduce-footprint" target="_blank"><span style="color:#E97E03">Lookout Uses Percona's Cloud Expertise to Reduce Footprint and Maintain Uptime</span></a><o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l0 level1 lfo1;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif"><a href="https://www.percona.com/about-percona/case-studies/madwire-achieves-performance-assurance-amazon-rds-aurora-through-percona" target="_blank"><span style="color:#E97E03">Madwire Achieves Performance Assurance for Amazon RDS Aurora Through Percona's Database Audit and Consultancy Services</span></a><o:p></o:p></span></li></ul> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:15.0pt;margin-left:0mm;line-height:18.0pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:10.5pt;font-family:"Chivo",serif;color:#777777">When a more fully customized solution is required, most of our customers usually prefer the use of AWS EC2 instances supported by our <a href="https://www.percona.com/services/managed-services" target="_blank"><span style="color:#E97E03">managed services offering</span></a>.<o:p></o:p></span></p> <h5 style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:10.5pt;margin-left:84.0pt;line-height:13.5pt;background:white;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Chivo",serif;color:#1D2127">TL;DR<o:p></o:p></span></h5> <ul type="disc"> <li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">If you are looking for a native HA solution then you should use Aurora<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">For a read-intensive workload within an HA environment, Aurora is a perfect match. Combined with <a href="https://www.percona.com/blog/2018/04/03/leveraging-proxysql-with-aws-aurora-for-performance/" target="_blank"><span style="color:#E97E03">ProxySQL for RDS</span></a> you can get a high flexibility<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">Aurora performance is great but is not as much as expected for write-intensive workloads when secondary indexes exist. In any case, you should benchmark both RDS MySQL and Aurora before taking the decision to migrate. Performance depends much on workload and schema design<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">By choosing Amazon Aurora you are fully dependent on Amazon for bug fixes or upgrades<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">If you need to use MySQL plugins you should use RDS MySQL<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">Aurora only supports InnoDB. If you need other engines i.e. MyISAM, RDS MySQL is the only option<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">With RDS MySQL you can use specific MySQL releases<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">Aurora is not included in the AWS free-tier and costs a bit more than RDS MySQL. If you only need a managed solution to deploy services in a less expensive way and out of the box availability is not your main concern, RDS MySQL is what you need<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">If for any reason Performance Schema must be ON, you should not enable this on Amazon Aurora MySQL T2 instances. With the Performance Schema enabled, the T2 instance may run out of memory<o:p></o:p></span></li><li class="MsoNormal" style="color:#777777;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;text-align:left;line-height:18.0pt;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box"> <span lang="EN-US" style="font-family:"Chivo",serif">For both products, you should carefully examine the known issues and limitations listed here <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html" target="_blank"><span style="color:#E97E03">https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/MySQL.KnownIssuesAndLimitations.html</span></a> and here <a href="https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.AuroraMySQL.html" target="_blank"><span style="color:#E97E03">https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.AuroraMySQL.html</span></a><o:p></o:p></span></li></ul> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><a href="https://www.percona.com/blog/2018/07/17/when-should-i-use-amazon-aurora-and-when-should-i-use-rds-mysql/">https://www.percona.com/blog/2018/07/17/when-should-i-use-amazon-aurora-and-when-should-i-use-rds-mysql/</a><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-67633900599138602092018-11-11T13:45:00.001+09:002018-11-11T13:45:33.668+09:00Amazon Aurora Day<div class="WordSection1"> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <div> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white"> <strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span></strong><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">が</span></strong><strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span></strong><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">史上最も急成長しているサービスである</span></strong><span style="color:#333333">ということから、今後も</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">に力を入れてくるでしょう。今時、システム全体をクラウドに乗せるのに、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">だけ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CPU</span><span style="color:#333333">ライセンスが必要というのは確かに現実的ではありません。商用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">からオープンソース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">、そして</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">への流れは自然な流れなのかもしれません。</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section1"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Keynote1</span><span style="color:#222222;letter-spacing:-.1pt">】</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Amazon Aurora with MySQL compatibility</span><span style="color:#222222;letter-spacing:-.1pt">最新情報~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">MySQL5.7</span><span style="color:#222222;letter-spacing:-.1pt">対応やプレビュー機能の狙い~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section2"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Sirish Chandrasekaran Principal Product Manager<o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section3"> <span style="color:#222222;letter-spacing:-.1pt">なぜ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora</span><span style="color:#222222;letter-spacing:-.1pt">を作ったのか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l15 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Intuit</span><span style="color:#333333">社の事例</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section4"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora</span><span style="color:#222222;letter-spacing:-.1pt">とは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l32 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">をクラウド環境のために再構築</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section5"> <span style="color:#222222;letter-spacing:-.1pt">特徴</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スケールアウト、分散、マルチテナントデザイン</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">を活用した、サービス指向アーキテクチャ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">フルマネージドサービス、自動化されたタスク</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ハイエンド</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">のような性能と可用性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">オープンソース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">のようなシンプルさとコスト効率</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL</span><span style="color:#333333">や</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">との互換性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">利用した分だけ支払うモデル</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l40 level1 lfo3;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">マネージドサービスとして提供</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">を入れてもらえれば他は何もしなくていい、というようにしたい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section6"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">1. </span><span style="color:#222222;letter-spacing:-.1pt">スケールアウト、分散、マルチテナントデザイン</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l48 level1 lfo4;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">コンピュートレイヤをストレージレイヤと分離している</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l48 level2 lfo4;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">専用に作られたログストレージ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l48 level2 lfo4;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ストレージボリュームは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">つの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">にすトライピング</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l48 level2 lfo4;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">各</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">に</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2</span><span style="color:#333333">つずつ、計</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">6</span><span style="color:#333333">つのデータのコピーを保持</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l48 level3 lfo4;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">+1の障害にも対応可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l48 level2 lfo4;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Master</span><span style="color:#333333">とレプリカが同じストレージを参照している</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section7"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">2. AWS</span><span style="color:#222222;letter-spacing:-.1pt">を活用した、サービス指向アーキテクチャ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level1 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">エコシステムを利用した構成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level2 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Lambda<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level3 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ストアドプロシージャ、トリガーから</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Lambda</span><span style="color:#333333">イベントを実行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level2 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">S3<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level3 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">S3</span><span style="color:#333333">からデータをロードしたり、スナップショットを</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">S3</span><span style="color:#333333">に保存</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level2 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">IAM<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level3 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">IAM</span><span style="color:#333333">ロールを</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">アクセス管理に利用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level2 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CloudWatch<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l42 level3 lfo5;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">システムメトリクスや監査ログを保存</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section8"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">3. </span><span style="color:#222222;letter-spacing:-.1pt">フルマネージドサービス、自動化されたタスク</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level1 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ユーザ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スキーマデザイン</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クエリ作成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クエリの最適化</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level1 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">自動化されたフェイルオーバー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">バックアップとリカバリ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">分離とセキュリティ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">自動パッチ適用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">定期的なメンテナンス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level1 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">時間のかかる</span></strong><strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span></strong><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">管理タスクを自動化することで、アプリの改善やビジネスに専念してもらう</span></strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">史上最速で成長しているサービス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWSTOP100</span><span style="color:#333333">のうち、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3/4</span><span style="color:#333333">が利用している</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level3 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">なぜ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">に移行したのか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level4 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">オープンソースを使っていたユーザ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level5 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">より高いパフォーマンス(最大</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">5</span><span style="color:#333333">倍)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level5 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">コストを最大</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">60</span><span style="color:#333333">%削減</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level5 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">簡単な移行。アプリの変更なし</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level4 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">コマーシャル</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">を使っていたユーザ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level5 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1/10</span><span style="color:#333333">のコスト。ライセンスなし</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level5 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Cloud</span><span style="color:#333333">システムとの統合</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level5 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">同等のパフォーマンスと可用性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level2 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">今のトレンドは、</span></strong><strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">NoSQL</span></strong><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">から</span></strong><strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span></strong><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">への移行</span></strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level3 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ハイパフォーマンスアプリ用のデータストア</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level4 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Cassandra</span><span style="color:#333333">(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">>100nodes</span><span style="color:#333333">)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora(</span><span style="color:#333333">~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10clusters)<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l25 level4 lfo6;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">大規模な遺伝子情報を扱う会社が、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">に移行することで、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10ms</span><span style="color:#333333">未満の読み取りレイテンシと大幅なコスト削減</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section9"> <span style="color:#222222;letter-spacing:-.1pt">パフォーマンス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level1 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL5.6&5.7</span><span style="color:#333333">と比較</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level2 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">R3</span><span style="color:#333333">ベースで約</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">5</span><span style="color:#333333">倍の性能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level1 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">リードレプリカレイテンシ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level1 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">I/O<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level2 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">の場合</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">プライマリインスタンス></span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">EBS</span><span style="color:#333333">></span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">EBS</span><span style="color:#333333">ミラー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">プライマリからレプリカへ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">レプリカインスタンス></span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">EBS</span><span style="color:#333333">></span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">EBS</span><span style="color:#333333">ミラー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level4 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">それぞれボリュームが独立しているため時間がかかる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level4 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">両方のインスタンスで同様の作業負荷が発生する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level2 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">の場合</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">シェアードストレージに書き込むのみ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">物理的な</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">IO</span><span style="color:#333333">は発生していない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">とくらべて</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">8</span><span style="color:#333333">倍速い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level1 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">でのパフォーマンス向上</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level2 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DML</span><span style="color:#333333">スループット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Fast B-tree insert<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Z-order spatial indexes<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Smart read-node selector<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level4 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">どのノードを読むのが一番早いかを判断</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level2 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クエリ実行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ハッシュ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">join<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level4 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">一部のクエリでは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">8</span><span style="color:#333333">倍性能が向上した</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level2 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DDL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l4 level3 lfo7;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">パフォーマンスの高い監査機能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section10"> <span style="color:#222222;letter-spacing:-.1pt">可用性について</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level1 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">パフォーマンスは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">が正常に稼働しているときに気にすること</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level1 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">なぜ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">6</span><span style="color:#333333">つのコピーが必要なのか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level2 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ+1</span><span style="color:#333333">の障害に対応する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level3 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">大規模な環境だと常に何かしらの障害は起きる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level3 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span></strong><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">障害は運命共同</span></strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level3 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ+1</span><span style="color:#333333">障害にも対応できて、修復も可能である必要がある</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level1 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">15</span><span style="color:#333333">台までの昇格可能なレプリカ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l33 level2 lfo8;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Master</span><span style="color:#333333">が失われても</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10</span><span style="color:#333333">秒以内に昇格できる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section11"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora</span><span style="color:#222222;letter-spacing:-.1pt">は簡単</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l14 level1 lfo9;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">はたくさんのことを処理してくれる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l14 level1 lfo9;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">さらに</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">64TB</span><span style="color:#333333">まで</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10GB</span><span style="color:#333333">ずつ自動スケールするストレージ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l14 level1 lfo9;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">clone</span><span style="color:#333333">も簡単にできる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l14 level2 lfo9;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">コピーではないので早い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section12"> <span style="color:#222222;letter-spacing:-.1pt">なぜ安価なのか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l7 level1 lfo10;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l7 level2 lfo10;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">シェアードストレージがないので、プライマリ・レプリカごとにストレージが必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l7 level1 lfo10;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l7 level2 lfo10;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ストレージは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">つのみ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l7 level3 lfo10;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">このため、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">よりも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">30</span><span style="color:#333333">%削減できる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l7 level2 lfo10;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">地裁インスタンスサイズにするとさらにコスト削減できる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section13"> <span style="color:#222222;letter-spacing:-.1pt">移行も容易</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l17 level1 lfo11;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">各種マイグレーションツールを用意している</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section14"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora</span><span style="color:#222222;letter-spacing:-.1pt">の新機能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section15"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">1. Multi-Master<o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level1 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">つの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MASTER</span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">15</span><span style="color:#333333">のリードレプリカが現状</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level1 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">シングル</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">なら全部が</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Master</span><span style="color:#333333">になる?(要確認)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level1 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">のダウンタイムをゼロにしたい!という要望 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">ex.EC</span><span style="color:#333333">サイト</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level1 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">書込みの性能(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">20</span><span style="color:#333333">万</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">/</span><span style="color:#333333">秒以上の性能が必要)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">ex.</span><span style="color:#333333">ゲームなど</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level1 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">継続した書込み可用性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level2 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">M1</span><span style="color:#333333">接続中に障害発生しても、他のノードへ接続を再接続</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l30 level2 lfo12;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">シェアードストレージなので影響はゼロ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section16"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">2. </span><span style="color:#222222;letter-spacing:-.1pt">パラレルクエリ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l37 level1 lfo13;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クエリをストレージノードの数千の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CPU</span><span style="color:#333333">にプッシュダウン</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l37 level1 lfo13;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">ストレージには数千の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CPU</span><span style="color:#333333">がある</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l37 level1 lfo13;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ユースケース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l37 level2 lfo13;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">OLTP</span><span style="color:#333333">ワークロードの分析クエリ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l37 level2 lfo13;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アドホッククエリに対する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">ETL</span><span style="color:#333333">パイプラインを作らなくてよい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l37 level2 lfo13;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">複数の分析クエリを同時実行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section17"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">3. </span><span style="color:#222222;letter-spacing:-.1pt">サーバレス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l8 level1 lfo14;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">可変ワークロードを持つアプリ用のオンデマンド、自動スケーリング</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l8 level1 lfo14;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ユースケース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l8 level2 lfo14;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スケールアップ・ダウン</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l8 level2 lfo14;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">0</span><span style="color:#333333">からスケール</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section18"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">4. </span><span style="color:#222222;letter-spacing:-.1pt">パフォーマンスインサイト</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l47 level1 lfo15;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">管理をしやすくするもの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l47 level1 lfo15;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">の負荷を表示するダッシュボード</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l47 level1 lfo15;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ボトルネックの原因を表示</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l47 level2 lfo15;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">TOP SQL<o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section19"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">5. MySQL5.7 compatibility<o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l45 level1 lfo16;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">互換性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l45 level2 lfo16;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">JSON</span><span style="color:#333333">サポート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section20"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Keynote2</span><span style="color:#222222;letter-spacing:-.1pt">】</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Amazon Aurora with PostgreSQL compatibility</span><span style="color:#222222;letter-spacing:-.1pt">最新情報~ついに東京リージョンでも利用可能に~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section21"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Kevin Jernigan Sr.Product Manager<o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section22"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">RDS</span><span style="color:#222222;letter-spacing:-.1pt">の歴史</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2006</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">S3</span><span style="color:#333333">リリース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2009</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">リリース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2012</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">サポート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2013</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">サポート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2014</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">をアナウンス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2015</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora with MySQL</span><span style="color:#333333">が</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GA<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l43 level1 lfo17;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2017</span><span style="color:#333333">年 </span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora with PostgreSQL compatibility</span><span style="color:#333333">が</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GA<o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section23"> <span style="color:#222222;letter-spacing:-.1pt">これまでの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">DB</span><span style="color:#222222;letter-spacing:-.1pt">はスケールが難しい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l34 level1 lfo18;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">複数の機能レイヤーが</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">つのアプリケーションになっている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l34 level1 lfo18;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">従来のアプローチ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l34 level2 lfo18;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アプリレイヤでシャーディング など</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l34 level1 lfo18;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDB</span><span style="color:#333333">をもう</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">度考える</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l34 level2 lfo18;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Cloud</span><span style="color:#333333">でやるならどうするか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l34 level2 lfo18;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">の誕生</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section24"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora</span><span style="color:#222222;letter-spacing:-.1pt">をよりよく</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level1 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">オープンソース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">である</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">20</span><span style="color:#333333">年の歴史がある</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">コミュニティが所有している</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">扱いやすいオープンソースライセンス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">高性能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">12</span><span style="color:#333333">言語でのストアドプロシージャサポート(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Java</span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Ruby</span><span style="color:#333333">など)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span></strong><strong><span style="font-family:"游ゴシック",sans-serif;color:#333333">からの移行先としても採用しやすい</span></strong><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l16 level2 lfo19;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">移行ツールによる自動変換率は、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">が最も高い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section25"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">PostgreSQL compatibility</span><span style="color:#222222;letter-spacing:-.1pt">が意味するもの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level1 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL9.6 + Aurora<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">パフォーマンス向上(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2~3</span><span style="color:#333333">倍)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">可用性(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">30</span><span style="color:#333333">秒未満でのフェールオーバー)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">堅牢性(3</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ6</span><span style="color:#333333">レプリカ)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">リードレプリカ(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">15</span><span style="color:#333333">台まで)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level1 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">セキュリティと暗号化</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">KMS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">IAM<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level1 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">による管理機能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level1 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データロード・アンロード</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">マイグレーションツール</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level1 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">との互換性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">互換性のためのレイヤーがあるのではない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">の実装をそのまま利用している</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l19 level2 lfo20;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">互換性に関してはバグはない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section26"> <span style="color:#222222;letter-spacing:-.1pt">パフォーマンス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">同じサイズのインスタンスで比較</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">つの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">EBS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">pgbench</span><span style="color:#333333">での比較結果</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ピーク性能の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1.6</span><span style="color:#333333">倍以上</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">最多クライアント数で実行した際の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2.9</span><span style="color:#333333">倍以上のスループット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Sysbench</span><span style="color:#333333">出の比較結果</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ピーク性能の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2</span><span style="color:#333333">倍以上</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">最多クライアント数で実行した際の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">5</span><span style="color:#333333">倍以上のスループット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">の見解</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">保守的に見ても、標準のポスグレよりも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2~3</span><span style="color:#333333">倍性能がいいと言える</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スループット比較</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">サイズが</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10GB</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">100GB</span><span style="color:#333333">に増えるとどうなるか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1.8</span><span style="color:#333333">倍から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">4.4</span><span style="color:#333333">倍違う</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GQ</span><span style="color:#333333">版はプレビュー版よりもさらに高性能になっている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">ロードでは、標準の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2</span><span style="color:#333333">倍以上速く完了</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">コピー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">バキューム処理</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">特に</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">はバキューム処理が早い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準よりも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">86</span><span style="color:#333333">%削減できる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Write</span><span style="color:#333333">の回数が圧倒的に減っているため</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">インデックス構築</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">レスポンスタイム比較</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準に比べて</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2</span><span style="color:#333333">倍以上短い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スパイクも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">99%</span><span style="color:#333333">削減</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準はチェックポイント時に跳ね上がる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">はチェックポイントのスパイクはない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準よりも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">99%</span><span style="color:#333333">削減</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">チェックポイントを持たない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スループット比較</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準に比べて</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">倍以上一貫した結果が得られた</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level1 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">リカバリ時間比較</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ストレージシステムのリカバリが高速に実行可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level2 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準よりも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">97%</span><span style="color:#333333">短く</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">redo</span><span style="color:#333333">ログサイズとともにクラッシュリカバリの時間が増加</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">redo</span><span style="color:#333333">ログ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3GB</span><span style="color:#333333">で</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">19</span><span style="color:#333333">秒</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">redo</span><span style="color:#333333">ログ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">30GB</span><span style="color:#333333">で</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">123</span><span style="color:#333333">秒</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level3 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">redo</span><span style="color:#333333">を持たない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">極めて高いスループットを維持</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l28 level4 lfo21;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">秒以内にリカバリを完了</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section27"> <span style="color:#222222;letter-spacing:-.1pt">パフォーマンスインサイト</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l29 level1 lfo22;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">の可視化をするダッシュボード</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l29 level1 lfo22;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データサンプリングを自動化する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l29 level2 lfo22;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Top SQL</span><span style="color:#333333">も見れる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l29 level1 lfo22;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">まだプレビュー版</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l29 level2 lfo22;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GA</span><span style="color:#333333">提供はまだ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section28"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">DB</span><span style="color:#222222;letter-spacing:-.1pt">マイグレーションサービス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level1 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS DB Migration Service<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データ移行の開始まで</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10</span><span style="color:#333333">分以下</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行中もアプリを実行可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">同種・異種間</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">にて移行可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level1 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS Schema Conversion Tool<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDB</span><span style="color:#333333">のコンバート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DWH</span><span style="color:#333333">のコンバート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">利用すると評価が得られる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level3 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">自動コンバートできないものがあれば理由も表示される</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level2 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">様々なターゲットを比較できる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level3 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">例えば、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">からどのオープンソース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">がいいかを教えてくれる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level4 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL</span><span style="color:#333333">か?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l27 level4 lfo23;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">か?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section29"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora with PostgreSQL</span><span style="color:#222222;letter-spacing:-.1pt">について</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level1 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10/24</span><span style="color:#333333">ローンチ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level1 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">セキュリティ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">KMS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SSL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">VPC default<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level1 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">高可用性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">15</span><span style="color:#333333">代のリードレプリカ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">高速なクラッシュリカバリ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level1 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">高性能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">標準の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2</span><span style="color:#333333">~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">倍のスループット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level1 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">運用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">/</span><span style="color:#333333">互換性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level2 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">機能レベルでの標準ポスグレとの互換性</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level3 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">10.3</span><span style="color:#333333">もサポートする</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level3 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">メジャーバージョンは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">年サポートする</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l49 level3 lfo24;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">マイナーバージョンは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">年サポートする</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section30"> <span style="color:#222222;letter-spacing:-.1pt">直近のアップデート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo25;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GA</span><span style="color:#333333">ローンチ(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">12</span><span style="color:#333333">のリージョン。東京含む)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo25;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">HIPAA</span><span style="color:#333333">認証</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo25;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">暗号化された</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">スナップショットのインポート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo25;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS for PostreSQL</span><span style="color:#333333">から、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora PostgreSQL</span><span style="color:#333333">リードレプリカの作成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l0 level2 lfo25;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ダウンタイムを減らすことができる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo25;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora PostgreSQL 1.1</span><span style="color:#333333">リリース(標準</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">9.6.6</span><span style="color:#333333">との互換性)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section31"> <span style="color:#222222;letter-spacing:-.1pt">今後</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l41 level1 lfo26;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL10</span><span style="color:#333333">のサポート(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">か月以内)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l41 level1 lfo26;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クロスリージョンレプリカ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l41 level1 lfo26;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アウトバウンドレプリケーション</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l41 level1 lfo26;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">マルチマスタ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l41 level1 lfo26;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">サーバレス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l41 level1 lfo26;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">これらは来年早々にはできるようになると思う</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section32"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora</span><span style="color:#222222;letter-spacing:-.1pt">ファミリー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l26 level1 lfo27;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora MySQL</span><span style="color:#333333">に早く追いついていく</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section33"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Session1</span><span style="color:#222222;letter-spacing:-.1pt">】徹底検証!!</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora with PostgreSQL compatibility<o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section34"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">株式会社アクアシステムズ 影山さん</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section35"> <span style="color:#222222;letter-spacing:-.1pt">内容</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ブログへの掲載禁止のため割愛。</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section36"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Session2</span><span style="color:#222222;letter-spacing:-.1pt">】マルチリージョンのテレビ会議クラウドを</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora+DMS</span><span style="color:#222222;letter-spacing:-.1pt">で実現した話</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section37"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">株式会社リコー 井上さん</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section38"> <span style="color:#222222;letter-spacing:-.1pt">関連発表</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">サービス全断はダメ、ゼッタイ。途切れないテレビ会議システムを目指して。</span><span style="font-family:"Arial",sans-serif;color:#333333"> </span><span style="font-family:"MS Gothic";color:#333333">※</span><span style="color:#333333">去年の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">サミット発表資料</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section39"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Ricoh USC</span><span style="color:#222222;letter-spacing:-.1pt">とは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ビジネス向けテレビ会議システム</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">専用端末+クラウド</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">グローバル</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level2 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">お客様に近い映像配信サーバから届ける</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level2 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">で</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">11</span><span style="color:#333333">のリージョンを使っている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">多拠点つなげる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2011</span><span style="color:#333333">年から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">private</span><span style="color:#333333">クラウドで運用開始</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2017</span><span style="color:#333333">年に全サービスのパブリッククラウド移行完了</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l2 level2 lfo28;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">運用開始</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section40"> <span style="color:#222222;letter-spacing:-.1pt">現構成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l21 level1 lfo29;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">呼制御系</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l21 level2 lfo29;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">の公式ページに構成図あり</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l21 level2 lfo29;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">ECS</span><span style="color:#333333">など活用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l21 level1 lfo29;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">映像配信</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l21 level1 lfo29;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">サービス監視</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section41"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">AWS</span><span style="color:#222222;letter-spacing:-.1pt">移行直後の構成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">オンプレからほぼそのままの構成で移行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL/RDS</span><span style="color:#333333">を</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">セット配置</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">課題</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">インスタンス数が多い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">複数リージョンで協調動作するシステム</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データは主に</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">3</span><span style="color:#333333">種類</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level4 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">主リージョンで書き込み、全リージョンで参照</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level4 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">全リージョンで読み書き、主リージョンに集約</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SPOF</span><span style="color:#333333">の内向性が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">フェイルオーバー時間に不満</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アプリ対応に限界</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ストレージ不足に拡張処理が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">小サイズの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS</span><span style="color:#333333">は効率が悪い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">5</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GB</span><span style="color:#333333">で十分な</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">もある</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">GP2</span><span style="color:#333333">ストレージの性能不足、補うには</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">33GB</span><span style="color:#333333">以上が必要!!</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">進構成の検討</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">の利用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">しかし</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">数が多いため高コストで無駄が多い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">そこで</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">による柔軟なレプリケーション構成を検討</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行を行うマネージドサービス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDBMS</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">S3</span><span style="color:#333333">などもできる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">一括コピー、継続的コピーが可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">テーブルを取捨選択してコピー可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スキーマを変換しながらのコピー可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">変更検知は</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Binary Log</span><span style="color:#333333">を使用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">checksum</span><span style="color:#333333">なし</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">注意点</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">文字セットの制限</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level4 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">以下は使えない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level5 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">utf8mb4<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level5 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">us_ascii<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level3 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">開始点は秒単位の時刻で指定</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level1 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">最終的な</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">導入決定</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l31 level2 lfo30;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">想定外の問題は</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">と協力してつぶしていく!!</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section42"> <span style="color:#222222;letter-spacing:-.1pt">新構成と移行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">リージョンごとに</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">つの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">クラスタをマルチ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">で設置</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">検証</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">のサイジング</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アプリの機能テスト・性能テスト</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ソースおよびターゲット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">のフェイルオーバー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">の機能・性能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">検証で分かったこと</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">機能や性能に問題はない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">のフェイルオーバー追従に課題</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">のフェイルオーバー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">マルチ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">では</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">30</span><span style="color:#333333">秒くらいで切り替わる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クライアントから見た課題</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">読み書きするクライアントがレプリカにつながってしまう</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">対策</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Java</span><span style="color:#333333">アプリは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MariaDB Connector/J</span><span style="color:#333333">を利用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level3 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">高速フェイルオーバーの恩恵を受けれる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クライアントを修正する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level3 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">泥臭い修正</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">の挙動</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ターゲットの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">が切り替わる:自動接続</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ソースの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">が切り替わる:自動接続しない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level3 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS1.9</span><span style="color:#333333">時点</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">対策</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">タスク監視</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行手順1</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">のリードレプリカを用意してレプリケーション</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">そのほかの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">からも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">へレプリケーション</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level1 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行手順2</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level2 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">当日の作業は</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">30</span><span style="color:#333333">分くらい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level3 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">旧</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">へのレプリケーション停止</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level3 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">で処理できない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">をダンプから投入</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l3 level3 lfo31;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">タスク作成&開始</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section43"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">9</span><span style="color:#222222;letter-spacing:-.1pt">か月分かったこと</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level1 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">クラスタは毎日作るものではない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">開発環境は毎日構築・破棄</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">クラスタのスナップショットからの構築は遅い。時々失敗する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">クラスタだけ残してもコストは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">S3</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">5</span><span style="color:#333333">倍程度</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">句ら鵜</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">s</span><span style="color:#333333">他を残し、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">インスタンスのみ毎日構築するようにした</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level1 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">アップっグレードとの付き合い方</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">必須アップグレードは所定の期間内にメンテナンスが必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">20~30</span><span style="color:#333333">秒のダウンタイムが発生</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level3 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">本番環境以外で影響確認したい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">旧バージョンの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">を顧客が作る方法はない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level3 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">本番以外で常時稼働環境が必要になる!!</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level1 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Zero Downtime Patching<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">接続を維持したままアップグレードできる機能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level2 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">の使い方によって背教が出る</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l18 level3 lfo32;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">サーバサイドのプリペアドステートメントが消える、など</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section44"> <span style="color:#222222;letter-spacing:-.1pt">まとめ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l35 level1 lfo33;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">すこしずつ移行するのがおすすめ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l35 level1 lfo33;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">最終形ではない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l35 level2 lfo33;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">日々のキャッチアップ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section45"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Session3</span><span style="color:#222222;letter-spacing:-.1pt">】</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Oracle Database</span><span style="color:#222222;letter-spacing:-.1pt">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Aurora with PostgreSQL compatibility</span><span style="color:#222222;letter-spacing:-.1pt">への移行~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">orafce</span><span style="color:#222222;letter-spacing:-.1pt">の活用による活用事例&メリット~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section46"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">NTT</span><span style="color:#333333">テクノクロス株式会社 勝俣さん</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section47"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">orafce</span><span style="color:#222222;letter-spacing:-.1pt">とは?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">上で</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">の機能を使えるようにする拡張モジュール</span><span style="font-family:"Arial",sans-serif;color:#333333"> </span><span style="color:#333333">以下が使えるようになる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"> - Data Type - SQL Queries - SQL Functions - SQL Operators - Packages<o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section48"> <span style="color:#222222;letter-spacing:-.1pt">意外と多い細かな違い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l10 level1 lfo34;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Varchar2(n)<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l10 level2 lfo34;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">:</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">byte</span><span style="color:#333333">数指定</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l10 level2 lfo34;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">:文字数指定</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l10 level1 lfo34;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DATE</span><span style="color:#333333">型</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l10 level2 lfo34;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">:年月日時分秒</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l10 level2 lfo34;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">:年月日</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section49"> <span style="color:#222222;letter-spacing:-.1pt">メリット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l6 level1 lfo35;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移植の効率化</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l6 level2 lfo35;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ポスグレ標準+</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">orafce</span><span style="color:#333333">がサポートする関数カバー率:</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">34%<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l6 level2 lfo35;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">実案件で使うだろう関数のカバー率:</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">73%<o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section50"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Session4</span><span style="color:#222222;letter-spacing:-.1pt">】</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Oracle Database</span><span style="color:#222222;letter-spacing:-.1pt">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Amazon Aurora</span><span style="color:#222222;letter-spacing:-.1pt">に移行するための実践ガイド</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section51"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">アマゾンウェブサービスジャパン株式会社 江川さん</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section52"> <span style="color:#222222;letter-spacing:-.1pt">お客様の声</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l23 level1 lfo36;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">クラウドにシステム全体を移すのであれば、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDBMS</span><span style="color:#333333">もクラウドネイティブにしたい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l23 level1 lfo36;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDBMS</span><span style="color:#333333">もオートスケールさせたいが、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CPU</span><span style="color:#333333">ライセンスだとできない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l23 level1 lfo36;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">IT</span><span style="color:#333333">予算の多くを</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">ライセンスを占めている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section53"> <span style="color:#222222;letter-spacing:-.1pt">現場の悩み</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level1 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">業務部門・アプリ開発部門</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level2 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アプリへの影響はどれくらい?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level2 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行の業務停止は短くしたい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level1 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">IT</span><span style="color:#333333">・インフラ部門</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level2 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">業務部門に何をガイドしたりいいの?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level2 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">従来の管理腫瘍がどう変わる?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l11 level2 lfo37;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行費用はかけたくない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section54"> <span style="color:#222222;letter-spacing:-.1pt">決めないといけないこと(5</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">W1H</span><span style="color:#222222;letter-spacing:-.1pt">)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section55"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">1. What?</span><span style="color:#222222;letter-spacing:-.1pt">(対象システムは?)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section56"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">2. Why?</span><span style="color:#222222;letter-spacing:-.1pt">(移行理由は?)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section57"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">3. How?</span><span style="color:#222222;letter-spacing:-.1pt">(移行戦略は?)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">の考える</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">6</span><span style="color:#333333">つの戦略</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Re-Host(</span><span style="color:#333333">ホスト変更)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Re-Platform</span><span style="color:#333333">(プラットフォーム変更)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行の複雑さ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">2</span><span style="color:#333333">位</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Re-Purchase</span><span style="color:#333333">(買い替え)オンプレの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">を、ライセンス込の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS for Oracle</span><span style="color:#333333">へ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Refactor</span><span style="color:#333333">(書き換え)オンプレの</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">を</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">に変更する、など</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行の複雑さ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">位</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">7.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">その分のメリットは大きい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">8.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Retire</span><span style="color:#333333">(廃止)このタイミングで古い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">やシステムを破棄する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l22 level1 lfo38;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">9.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Retain</span><span style="color:#333333">(保持)オンプレを使い続ける(</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle9i</span><span style="color:#333333">に依存してるアプリなど)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section58"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">4. Where?</span><span style="color:#222222;letter-spacing:-.1pt">(移行先は?)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level1 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RDS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level2 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora MySQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level2 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora PostgreSQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level3 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">結合法方</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ネステッドループ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ハッシュ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ソート</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">merge<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level3 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">インデックス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">B</span><span style="color:#333333">ツリー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">関数</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">空間</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">全文</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ゾーンマップ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level3 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">制約</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">NOT NULL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PK<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">UNIQUE<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">FK<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level4 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CHECK<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level1 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Redshift<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level2 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データウェアハウス用途</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l9 level1 lfo39;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">on EC2<o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section59"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">5. When?</span><span style="color:#222222;letter-spacing:-.1pt">(期限は?)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l44 level1 lfo40;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">工数見積が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l44 level2 lfo40;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">工数=移行先との違いの量</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h4 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.25rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section60"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">6. Who?</span><span style="color:#222222;letter-spacing:-.1pt">(担当者は?)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h4> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l20 level1 lfo41;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">工数見積が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l20 level2 lfo41;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">工数=移行先との違いの量</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section61"> <span style="color:#222222;letter-spacing:-.1pt">移行支援サービス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l13 level1 lfo42;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">計画</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l13 level2 lfo42;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS CTO Calculator<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l13 level1 lfo42;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l13 level2 lfo42;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS DMS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l13 level1 lfo42;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">運用</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section62"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">AWS DMS</span><span style="color:#222222;letter-spacing:-.1pt">とは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">既存</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">を最小限のダウンタイムでマイグレーションするサービス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">同種はもちろん異種プラットフォームの移行にも対応</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行中もアプリケーションは稼働したまま</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level2 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AWS</span><span style="color:#333333">上に</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">用の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">起動</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level2 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行元の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">を以下で接続</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level3 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Internet<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level3 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">VPN<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level3 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Direct Connect<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level2 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">同期が完了したら、アプリ側の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">の向き先を変える(ダウンタイムはここだけ)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l1 level1 lfo43;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">マルチ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">構成が可能</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section63"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">AWS Schema Conversion Tool<o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level1 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ソース</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">のビューや</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Function</span><span style="color:#333333">をターゲット</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">向けに変換</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level1 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">デスクトップアプリで提供</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level1 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">できること</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level2 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">自動変換&自動変換の補助</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level2 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">評価レポートの作成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level3 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">どこができるか色分けされたグラフが出る</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level4 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">緑:自動変換</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level4 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">青:検討が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level4 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">赤:深い検討が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l38 level2 lfo44;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アプリケーション</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SQL</span><span style="color:#333333">にも対応</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section64"> <span style="color:#222222;letter-spacing:-.1pt">事例</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level1 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">レコチョク</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level2 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle RAC</span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">移行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level3 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1000</span><span style="color:#333333">万会員の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level2 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS/SCT</span><span style="color:#333333">リリース前に手動で移行</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level2 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">結果</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level3 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">による障害はこれまでゼロ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l46 level3 lfo45;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">サーバ運用に工数はほとんど咲かなくてよい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section65"> <span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Oracle</span><span style="color:#222222;letter-spacing:-.1pt">との違い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level1 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Object</span><span style="color:#333333">の主な違い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level2 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL</span><span style="color:#333333">のシーケンス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AUTO_INCREMENT</span><span style="color:#333333">属性を付与</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">NULL</span><span style="color:#333333">または</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">0</span><span style="color:#333333">を入れる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level2 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">のマテリアライズドビュー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">リフレッシュは手動のフルリフレッシュのみ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">読み取り専用のみ対応</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level2 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">リンク</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">dblink<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level4 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">関数として実装されている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level4 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ビューで隠ぺいするのが一般的</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">postgres_fdw<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level2 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">パーティショニング</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level4 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RANGE</span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">HASH</span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">LIST</span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">KEY<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level4 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">RANGE</span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">LIST<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level4 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">v10~</span><span style="color:#333333">宣言的パーティショニング</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ストアドプロシージャ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">/</span><span style="color:#333333">ストアドファンクション</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level4 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Aurora</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Java</span><span style="color:#333333">プロシージャに未対応</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level1 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">互換性がないとどうなるのか</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level2 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">文法</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">ERROR</span><span style="color:#333333">になる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">地道に対応する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level2 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">文法</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">ERROR</span><span style="color:#333333">にならず結果が異なる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l5 level3 lfo46;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">このパターンが厄介</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section66"> <span style="color:#222222;letter-spacing:-.1pt">結果相違を起こしやすい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">2</span><span style="color:#222222;letter-spacing:-.1pt">大ポイント</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level1 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">NULL</span><span style="color:#333333">と空文字の扱いの違い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level1 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">が</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SQL</span><span style="color:#333333">標準からずれている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level2 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">では区別しない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level2 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL</span><span style="color:#333333">や</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">は区別する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level1 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">対策</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level2 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">''</span><span style="color:#333333">で</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">grep</span><span style="color:#333333">するとよい</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level2 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">外部結合した後の</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">||</span><span style="color:#333333">にも注意</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level1 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CHAR</span><span style="color:#333333">の埋められた空白の扱いの違い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level1 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">Oracle</span><span style="color:#333333">は末尾の空白を保持する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l39 level1 lfo47;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">MySQL</span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">PostgreSQL</span><span style="color:#333333">は、末尾の空白を無視する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section67"> <span style="color:#222222;letter-spacing:-.1pt">トランザクション分離レベル</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l36 level1 lfo48;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">数やデフォルトが</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">で違う</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section68"> <span style="color:#222222;letter-spacing:-.1pt">バキューム</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l24 level1 lfo49;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">postgreSQL</span><span style="color:#333333">独自</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l24 level1 lfo49;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">運用設計が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l24 level2 lfo49;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">今は自動になっている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h2 style="mso-margin-top-alt:24.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:0mm;background:white;font-size:1.5rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section69"> <span style="color:#222222;letter-spacing:-.1pt">【</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt">Session5</span><span style="color:#222222;letter-spacing:-.1pt">】移行の前には移行アセスメントを~移行難易度や工数を事前に確認する~</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h2> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section70"> <span style="color:#222222;letter-spacing:-.1pt">スピーカー</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">アマゾンウェブサービスジャパン株式会社 北川さん</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section71"> <span style="color:#222222;letter-spacing:-.1pt">現実では・・・</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p style="mso-margin-top-alt:0mm;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;background:white;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">簡単に</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">移行できないこともある(外字が入っているとか)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:12.0pt;margin-left:42.0pt;background:white;font-size:1.375rem;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px" id="section72"> <span style="color:#222222;letter-spacing:-.1pt">移行前に実施すべき内容</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#222222;letter-spacing:-.1pt"><o:p></o:p></span></h3> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">システムの棚卸</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行対象</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">を使っているシステムの把握</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">システム間連携の有無</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データの流れの把握</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">障害発生時の復旧プロセス</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">そもそも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">がサポートしている</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DB</span><span style="color:#333333">バージョン・エディションか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">7.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行対象の決定</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">8.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ミドルウェアのサポート終了期間の確認(緊急度)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">9.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">アセスメントの実施</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">10.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">プロシージャの数</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DDL</span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SCT</span><span style="color:#333333">で自動変換できる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">プロシージャは</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DCT</span><span style="color:#333333">の自動変換率が比較的低い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SCT</span><span style="color:#333333">で評価レポートを作成する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level4 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">予想工数が色分けされる</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level5 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">青:</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">時間未満</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level5 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">黄:</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">4</span><span style="color:#333333">時間未満</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:96.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level5 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">赤:</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">4</span><span style="color:#333333">時間以上</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">11.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SELECT</span><span style="color:#333333">文の数</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">自動変換率が比較的低い</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">12.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">テストの洗い出し、工数確認</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SQL</span><span style="color:#333333">解釈の方言で同じ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">SQL</span><span style="color:#333333">でも結果が違う可能性がある</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">データが正しく移行されたかの確認が必要</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">テストフレームワークがあればよいが、なければ大変</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">工数だけで判断しない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">重要度と緊急度も考慮する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">13.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">移行計画</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ダンプツール</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">CSV</span><span style="color:#333333">アンロード</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">レプリケーション</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS<o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">何でもかんでも</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">でやろうとしない</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">ネイティブの方法がベストな時もある</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">14.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">事前検証の実施</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">15.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">選択した移行方法で留意事項を確認</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">¥マーク、外字など</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">同期レプリケーションか?非同期レプリケーションか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">どれくらい時間差があるのか</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">非同期の場合クラッシュしたらどうするか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level4 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">マルチ</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">AZ</span><span style="color:#333333">構成</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level4 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">DMS</span><span style="color:#333333">で二重障害が起きるとどこから再開するかが困難</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:78.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level4 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">「十分な時間がとれるか?」を再度検討すべき</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">16.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">スケジュールの策定</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">17.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">事前検証結果から、移行方法が妥当か確認</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">18.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">連携状況から他のシステムを含めた影響を確認</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">本当に並行移行させる必要があるのか?</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:42.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level2 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:"Courier New";color:#333333"><span style="mso-list:Ignore">o<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333">1</span><span style="color:#333333">日止めれば難易度は下がるのでは?(安全かつ確実)</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:60.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level3 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Wingdings;color:#333333"><span style="mso-list:Ignore">§<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">など</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">19.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">トラブルを見越したスケジュールを組む</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:24.0pt;text-align:left;text-indent:-18.0pt;mso-list:l12 level1 lfo50;background:white"> <![if !supportLists]><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><span style="mso-list:Ignore">20.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">検証には可能な限り実データを使用する</span><span lang="EN-US" style="font-family:"Arial",sans-serif;color:#333333"><o:p></o:p></span></p> </div> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><a href="https://www.yokoyan.net/entry/2018/03/30/220000">https://www.yokoyan.net/entry/2018/03/30/220000</a><o:p></o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US" style="font-size:12.0pt;font-family:"MS Pゴシック",sans-serif"><o:p> </o:p></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0tag:blogger.com,1999:blog-3597687715095949318.post-15908311962290283712018-11-09T22:42:00.001+09:002018-11-09T22:42:22.641+09:00PCAとSVDの関連について<div class="WordSection1"> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <div> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white"> <span style="color:#333333">次元削減や統計分析によく使われる</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> <strong><span style="font-family:"Segoe UI",sans-serif">PCA</span></strong> </span><span style="color:#333333">(主成分分析:</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">principal component analysis</span><span style="color:#333333">)と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> <strong><span style="font-family:"Segoe UI",sans-serif">SVD</span></strong> </span><span style="color:#333333">(特異値分解:</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">singular value decomposition</span><span style="color:#333333">)の関連について書いていきます。というか、ぶっちゃけ(次元削減をするという目的では)どっちもほぼ同じようなものですよ、というのが主張です。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">記事の作成にあたって、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> <a href="http://stats.stackexchange.com/questions/134282/relationship-between-svd-and-pca-how-to-use-svd-to-perform-pca" target="_blank"><span style="color:#6200AC">Cross Validated</span></a> </span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> amoeba </span><span style="color:#333333">氏の回答を大いに参考にさせていただきました。また、扱っているトピックの性質から、線形代数と統計学の基礎的な知識を前提としています。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">まずはなぜ次元削減をしたいのか?</span><span style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">をざっと説明し、そのあと数学的に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> PCA </span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">の関連性について見ていきます。最後に、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">Python </span><span style="color:#333333">を用いて数学的な部分を補足します。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:21.5pt;color:#333333">なぜ次元削減をしたいのか?</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h1> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">例として、製品の長さ、幅、重さから製造所を学習して、新しい製品を持ってきたときにその製造所を予測する、というような問題が考えられます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="background:white;border-collapse:collapse;border:none;box-sizing: inherit;border-spacing: 0px;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;overflow:auto;word-spacing:0px"> <thead> <tr style="box-sizing: inherit"> <td style="border-top:#DDDDDD;border-left:#DDDDDD;border-bottom:#CCCCCC;border-right:#CCCCCC;border-style:solid;border-width:1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span style="color:#333333">長さ</span></b><b><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span style="color:#333333">幅</span></b><b><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:18.0pt;margin-left:0mm;text-align:center"> <b><span style="color:#333333">重さ</span></b><b><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><b><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></b></p> </td> <td style="border-top:solid #DDDDDD 1.0pt;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt"> <p class="MsoNormal" align="center" style="text-align:center"><b><span style="color:#333333">製造所</span></b><b><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ID<o:p></o:p></span></b></p> </td> </tr> </thead> <tbody> <tr style="box-sizing: inherit"> <td style="border-top:none;border-left:solid #DDDDDD 1.0pt;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">3.0<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">5.1<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">100.2<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">A<o:p></o:p></span></p> </td> </tr> <tr style="box-sizing: inherit"> <td style="border-top:none;border-left:solid #DDDDDD 1.0pt;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2.9<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">5.3<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">100.1<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">A<o:p></o:p></span></p> </td> </tr> <tr style="box-sizing: inherit"> <td style="border-top:none;border-left:solid #DDDDDD 1.0pt;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">3.4<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">5.2<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">98.2<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">B<o:p></o:p></span></p> </td> </tr> <tr style="box-sizing: inherit"> <td style="border-top:none;border-left:solid #DDDDDD 1.0pt;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2.9<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">4.8<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">101.0<o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">C<o:p></o:p></span></p> </td> </tr> <tr style="box-sizing: inherit"> <td style="border-top:none;border-left:solid #DDDDDD 1.0pt;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> <td style="border-top:none;border-left:none;border-bottom:solid #CCCCCC 1.0pt;border-right:solid #CCCCCC 1.0pt;background:#EEEEEE;padding:6.0pt 7.5pt 6.0pt 7.5pt;box-sizing: inherit"> <p class="MsoNormal" align="center" style="text-align:center"><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </td> </tr> </tbody> </table> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">この場合、長さ、幅、重さ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">……</span><span style="color:#333333">などの測定値を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">特徴量</span></strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">、製造所</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">ID</span><span style="color:#333333">を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">ラベル</span></strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">として何らかの機械学習をすることが考えられます。ただ、多くの場合、この特徴量が多すぎるといった状況が発生します。中には、「製造に要した時間」のようなおおよそ関係なさそうな測定値が入っていたり、重さと体積のような、明らかに相関がありそうなものが入っていたりします。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">人間であれば「この特徴量は関係なさそうだな」とあらかじめアタリをつけて表から落としたりもできますが、基本的に機械学習アルゴリズムは与えられた特徴量を公平に評価します。その結果、ラベルと論理的に関係がない特徴量にまで相関を見出してしまう</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">……</span><span style="color:#333333">なんてことも起こってしまいます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">また、特徴量どうしに相関がある場合、それらのモデル内での役割はほぼ同じであり、そこまで多くの情報を持っていることにはなりません。極端な例を挙げると、「長さ」のカラムが表に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">つあってまったく同じ値が入っていたら、どちらかはいらないデータですよね。カラムが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">つあるように見えても、実質的にはカラム</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">つ分の情報しかないわけです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">こういった「いらない特徴量」があると学習に時間がかかるだけでなく、ノイズになったり過学習を引き起こしたりとあまりいいことはありません。そこで登場するのが</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">次元削減</span></strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">という考え方で、書いて字のごとく、特徴量の次元(</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">=</span><span style="color:#333333">個数)を削減してしまおうというもので、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">や</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">なども次元削減に活用されています。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="font-size:21.5pt;color:#333333">の数学的表現</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h1> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">データとして、サイズ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[n×p]</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">の行列</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">を考えます(</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">></span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n>p</span></span><span style="color:#333333">)。ここで、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">がデータの点数、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">が特徴量の数であり、各データは標準化(分散を</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span style="color:#333333">、平均をゼロにする操作)されているとします。すると、</span><span style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">サイズ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[p×p]</span></span><span style="color:#333333">の(不偏)共分散行列</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">は、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Xn</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ=XTXn−1</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">と書けます(平均を引き忘れているように見えますが、平均をゼロとする操作をすでにしているので、不要です)。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ここで、共分散行列を固有値分解することによって、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">L</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tpca</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=(</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">v</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main-bold",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">v</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main-bold",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">2</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">v</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)=</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size4",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⎛⎝⎜⎜⎜⎜⎜⎜⎜</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λ</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λ</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">2</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">000</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋱⋯⋯⋯</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λ</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size4",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⎞⎠⎟⎟⎟⎟⎟⎟⎟</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ=VpcaLVpcaTVpca=(v1v2</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">vp)L=(λ100</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00λ20</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮⋱⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λp)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">が得られます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ここで、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λ</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λi</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">番目の固有値(固有値は大きい順に並んでいるとします)、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">v</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">vi</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">は対応する固有ベクトルで、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span style="color:#333333">次元の列ベクトルです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">の場合特に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-bold-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">v</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">vi</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">のことを</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">第</span></strong><strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span></strong><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span></strong><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">主成分</span></strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">と呼びます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">また、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">L</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">L</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">の行列のサイズはどちらも</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[p×p]</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">で、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">は直交行列です。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">もとのデータを主成分の空間に変換したい場合は、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XVpca</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">とします。また、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">の最初の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">列(</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"><</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k<p</span></span><span style="color:#333333">)だけをとってきた</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[n×k]</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">行列</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mo"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mo"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca(k)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">を使うことによって、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XV</span></span><span class="mo"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mo"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XVpca(k)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">と、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">次元から</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">次元へ次元削減することができます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333">SVD </span><span style="font-size:21.5pt;color:#333333">の数学的表現</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h1> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">同じデータ行列</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">を考えます。詳細は省略しますが、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">SVD </span><span style="color:#333333">を行うことによって、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XS</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">USV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size4",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">000</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">2</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">000</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋱⋯⋯⋯⋯⋯</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size4",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X=USVsvdTS=(s100</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00s20</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮⋱⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">sp00</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">000</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮⋮⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">というような分解ができます。ここで、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">U</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">U</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">はそれぞれサイズ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[n×n]</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[p×p]</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">の直行行列で、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">のサイズは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">×</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">]</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">[n×p]</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">です。また、この</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">si</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">のことを</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><strong><span style="font-family:"MS Pゴシック",sans-serif;color:#333333">特異値</span></strong><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">と呼びます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span> <span style="color:#333333">のときと同様に、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XVsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">とすることで変換ができ、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XV</span></span><span class="mo"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">k</span></span><span class="mo"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">XVsvd(k)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">で次元削減ができます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h1 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="font-size:21.5pt;color:#333333">と</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="font-size:21.5pt;color:#333333">のつながり</span><span lang="EN-US" style="font-size:21.5pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h1> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ここまでで出てきた重要な式をもう一度書いておきます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">ΣΣ</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Xn</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tpca</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">USV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ=XTXn−1Σ=VpcaLVpcaTX=USVsvdT</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">が</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">によって分解できることがわかっているので、これを</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> 1 </span><span style="color:#333333">番目の式に代入してみましょう。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Xn</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size1",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">USV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size1",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">USV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">/</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">U</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">USV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">/</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">SV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">/</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)(</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_AMS",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">∵</span></span><span class="mo"><span style="color:#333333;border:none windowtext 1.0pt;padding:0mm">直交行列の性質より、</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">U</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">U</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ=XTXn−1=(USVsvdT)TUSVsvdT / (n−1)=VsvdSTUTUSVsvdT / (n−1)=VsvdSTSVsvdT / (n−1)(</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">∵</span></span><span class="mjxassistivemathml"><span style="color:#333333;border:none windowtext 1.0pt;padding:0mm">直交行列の性質より、</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">UTU=1)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">一方、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">から</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tpca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Σ=VpcaLVpcaT</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">だったので、見比べると</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tpca</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">SV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">VpcaLVpcaT=VsvdSTSVsvdTn−1</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">となります。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">の関連が見えてきそうですね!</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">固有値の関連</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">STS</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">の部分を計算してみると、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size4",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⎛⎝⎜⎜⎜⎜⎜⎜⎜⎜</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">21</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">22</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">000</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋱⋯⋯⋯</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">2</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">p</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Size4",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⎞⎠⎟⎟⎟⎟⎟⎟⎟⎟</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">STS=(s1200</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00s220</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">0</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋮⋱⋮</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">00</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">⋯</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">sp2)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">と、対角行列になってくれます。ここから、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λ</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">2</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λi=si2n−1</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">がわかります</span><sup id="fnref1"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://qiita.com/horiem/items/71380db4b659fb9307b4#fn1" title="$V_{svd}$ は規格化された直交ベクトルの並びなので、勝手に係数をかけることができません。なので、$1 / (n - 1)$ の部分は必ず $S^T S$ の部分にかかっているだろうと判断できるわけです。"><span style="color:#6200AC">1</span></a></span></sup><span style="color:#333333">。なんと、主成分に対応する固有値と特異値の間に、こんなシンプルな関係があったんですね。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">主成分の関連</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">では、固有値の関連を考慮に入れて先ほどの関連の式を見てみましょう。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <div style="margin-top:12.0pt;margin-bottom:12.0pt;box-sizing: inherit;max-width:none;max-height: none;min-width: 0px;min-height: 0px;overflow:hidden"> <p class="MsoNormal" align="center" style="text-align:center;background:white"><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tpca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tpca</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">SV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">LV</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Tsvd</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_AMS",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">∵</span></span><span class="mo"><span style="color:#333333;border:none windowtext 1.0pt;padding:0mm">固有値の関連</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">VpcaLVpcaT=VsvdSTSVsvdTn−1VpcaLVpcaT=VsvdLVsvdT(</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Cambria Math",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">∵</span></span><span class="mjxassistivemathml"><span style="color:#333333;border:none windowtext 1.0pt;padding:0mm">固有値の関連</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ここから、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">はかなり近いものだということが予想されます。直感的には</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca=Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">としたくなりますが(そしてそれは正しい場合もありますが)、正しくありません。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">SVD </span><span style="color:#333333">において</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">は一意に決まらない場合があるためです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">この部分に関しては、実際にコードで確認してみましょう。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333">Python </span><span style="font-size:19.0pt;color:#333333">での検証</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">サンプルコード</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">では、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> Python3 </span><span style="color:#333333">で検証していきましょう。ポイントとしては、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">行列の掛け算に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><code><span style="font-size:12.0pt;color:#333333;background:#EEEEEE">@</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">演算子(=</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><code><span lang="EN-US" style="font-size:12.0pt;font-family:Consolas;color:#333333;background:#EEEEEE">np.dot()</span></code><span style="color:#333333">)を使用(</span><code><span lang="EN-US" style="font-size:12.0pt;font-family:Consolas;color:#333333;background:#EEEEEE">*</span></code><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">だと要素対要素の積になってしまう)</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">sklearn </span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">ライブラリでは母集団分散をベースにしているので不使用</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">固有ベクトルが固有値の大きさ順に並んでないないのでソート</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l0 level1 lfo1;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">SVD </span><span style="color:#333333">ででてくる</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">が転置されているので、数式との整合性を考えてさらに転置</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">という感じです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="margin-left:-24.0pt;margin-top:18.0pt;margin-right:-24.0pt;margin-bottom:18.0pt;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <div> <pre><span class="kn"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">import</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="nn">numpy</span> </span><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">as</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span><o:p></o:p></span></pre> <pre><span class="kn"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">from</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="nn">sklearn.preprocessing</span> </span><span class="kn"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">import</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">StandardScaler</span><o:p></o:p></span></pre> <pre><span class="kn"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">import</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="nn">matplotlib.pyplot</span> </span><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">as</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">plt</span><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Define data</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">array</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">([[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">4</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">3</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">6</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">4</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">8</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">]],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">dtype</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="nb"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">float</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">n</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">p</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">shape</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Standardize the data</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">stdsc</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">StandardScaler</span><span class="p">()</span><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_std</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">stdsc</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">fit_transform</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Perform PCA</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">cov</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_std</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">T</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="err"><span lang="EN-US" style="font-family:Consolas;color:#DDDDDD">@</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_std</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">/</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">(</span><span class="n">n</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">-</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">W</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">V_pca</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">linalg</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">eig</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">cov</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Sort eigenvectors with eigenvalues</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">index</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">W</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">argsort</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">()[::</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">-</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">]</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">W</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">W</span><span class="p">[</span><span class="n">index</span><span class="p">]</span><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_pca</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">V_pca</span><span class="p">[:,</span> <span class="n">index</span><span class="p">]</span><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Perform SVD</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">U</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">s</span><span class="p">,</span> <span class="n">V_svd</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">linalg</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">svd</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_std</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">full_matrices</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="bp"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">True</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_svd</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">V_svd</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">T</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">S</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">zeros</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">((</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">n</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">p</span><span class="p">))</span><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">S</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[:</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">p</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">:</span><span class="n">p</span><span class="p">]</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">diag</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">s</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Print results</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">"Engenvalues from PCA"</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">W</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">"Eigenvalues from SVD"</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">s</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">**</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">/</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">(</span><span class="n">n</span> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">-</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">))</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">"V_pca"</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_pca</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">"V_svd"</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="k"><span lang="EN-US" style="font-family:Consolas;color:#EBD247">print</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_svd</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="c"><span lang="EN-US" style="font-family:Consolas;color:#9DABAE"># Plot results</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_pca</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_std</span> </span><span class="err"><span lang="EN-US" style="font-family:Consolas;color:#DDDDDD">@</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">V_pca</span><span class="p">[:,</span> <span class="p">:</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">]</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_svd</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_std</span> </span><span class="err"><span lang="EN-US" style="font-family:Consolas;color:#DDDDDD">@</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">V_svd</span><span class="p">[:,</span> <span class="p">:</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">]</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p> </o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">plt</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">scatter</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_std</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[:,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">0</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_std</span><span class="p">[:,</span> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">color</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">'red'</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">plt</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">scatter</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_pca</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[:,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">0</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_pca</span><span class="p">[:,</span> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">marker</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">'+'</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">color</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">'blue'</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">plt</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">scatter</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">(</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X_svd</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[:,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">0</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">X_svd</span><span class="p">[:,</span> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">marker</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">'o'</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">color</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="s"><span lang="EN-US" style="font-family:Consolas;color:#41B7D7">'green'</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">plt</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">show</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">()</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> </div> </div> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">特徴量に完全な相関があるとき</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">インプットにはとりあえず、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">つめの特徴量と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">つめの特徴量が完全に相関しているときを置いてみます。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">出力はこちら。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="margin-left:-24.0pt;margin-top:18.0pt;margin-right:-24.0pt;margin-bottom:18.0pt;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <div> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">Engenvalues from PCA<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[ 2.66666667 0. ]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">Eigenvalues from SVD<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[ 2.66666667e+00 2.15722070e-32]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_pca<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[[ 0.70710678 -0.70710678]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [ 0.70710678 0.70710678]]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_svd<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[[ 0.70710678 -0.70710678]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [ 0.70710678 0.70710678]]<o:p></o:p></span></pre> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">まずは固有値の比較から、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λ</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">=</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">s</span></span><span class="mn"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">2</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">i</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">/</span></span><span class="mtext"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm"> </span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">(</span></span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">λi=si2 / (n−1)</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">の式が正しいことを確認してください。また、この場合は</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">が等しくなっていそうです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">また、元のデータの</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">列めと</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">列めのプロット、第一主成分と第二主成分のプロット(サンプル後半部分)はこちら。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">赤が元データで、ひとつめの特徴量とふたつめの特徴量が完全に相関していることが見て取れると思います。これはインプット通りですね。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">緑(その下に青もありますが、隠れています)が、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">や</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">で変換した後のデータです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">見てわかる通り、第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">主成分だけが残り、第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">主成分はすべてゼロになってしまいました。これは、冒頭の方で書いた、「『長さ』のカラムが表に</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">つあってまったく同じ値が入っていたら〜」の再現です。完全に相関している</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">つの特徴量は、実質的に特徴量</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">つ分の情報しか持っていないということですね。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">特徴量に完全な相関がないとき</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">では、入力データを</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="margin-left:-24.0pt;margin-top:18.0pt;margin-right:-24.0pt;margin-bottom:18.0pt;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <div> <pre><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">np</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">.</span></span><span class="n"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">array</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">([[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">1</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">2</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">5</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">3</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">6</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="p">[</span></span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">4</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">,</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> </span><span class="mi"><span lang="EN-US" style="font-family:Consolas;color:#A980F5">7</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">]],</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> <span class="n">dtype</span></span><span class="o"><span lang="EN-US" style="font-family:Consolas;color:#FF8095">=</span></span><span class="nb"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">float</span></span><span class="p"><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">)</span></span><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"><o:p></o:p></span></pre> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">のように変えてみましょう。特徴量の相関を完全ではなくします。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="margin-left:-24.0pt;margin-top:18.0pt;margin-right:-24.0pt;margin-bottom:18.0pt;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <div> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">Engenvalues from PCA<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[ 2.60824385 0.05842282]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">Eigenvalues from SVD<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[ 2.60824385 0.05842282]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_pca<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[[ 0.70710678 -0.70710678]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [ 0.70710678 0.70710678]]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">V_svd<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">[[ 0.70710678 0.70710678]<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [ 0.70710678 -0.70710678]]<o:p></o:p></span></pre> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">今度は、</span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:10.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">pca</span></span><span class="mo"><span style="color:#333333;border:none windowtext 1.0pt;padding:0mm">と</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vpca</span></span><span class="mjxassistivemathml"><span style="color:#333333;border:none windowtext 1.0pt;padding:0mm">と</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">V_{svd}$ </span><span style="color:#333333">で第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">主成分(</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2 </span><span style="color:#333333">列目)の符号が違っています。これが、先ほど言っていた、ふたつが一致しない状況、ということですね。ただ、符号が違うだけなので、軸としては同じものを表しているようなイメージですね。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">データのプロットを見ると、今度は第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">主成分も非ゼロの値を持ちます。今度は特徴量同士の相関が完全ではなかったため、相関でカバーできなかった部分(=新しい情報)が第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">主成分でカバーされているというわけです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">また、第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">主成分の方向が</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> PCA </span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">で異なっていたために、データがちょうど</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">X</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">軸対象になっています。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <h3 style="margin-left:42.0pt;background:white;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:17.0pt;color:#333333">次元削減をするとき</span><span lang="EN-US" style="font-size:17.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h3> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">では、データを</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">3</span><span style="color:#333333">次元に増やして</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="margin-left:-24.0pt;margin-top:18.0pt;margin-right:-24.0pt;margin-bottom:18.0pt;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <div> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3">X = np.array([[1, 5, 4],<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [2, 4, 3],<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [3, 5, 2],<o:p></o:p></span></pre> <pre><span lang="EN-US" style="font-family:Consolas;color:#E3E3E3"> [4, 0, 0]], dtype=float)<o:p></o:p></span></pre> </div> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">として計算しました。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">で得られた第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">、第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">主成分だけをプロットしています。つまり、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">3</span><span style="color:#333333">次元から</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">2</span><span style="color:#333333">次元に次元削減をしたようなイメージです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">このときは第</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">1</span><span style="color:#333333">主成分の符号が逆転していたので、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:14.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Y</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Y</span></span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="color:#333333">軸対称のデータになっています。しかし、この対称な違いを除いて、このふたつは同じ情報を持っています。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div style="mso-element:para-border-div;border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0mm 0mm 1.0pt 0mm;background:white"> <h2 style="background:white;border:none;padding:0mm;box-sizing: inherit;margin:2.4rem;font-feature-settings: "palt";cursor:pointer;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="font-size:19.0pt;color:#333333">まとめ</span><span lang="EN-US" style="font-size:19.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></h2> </div> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span> <span style="color:#333333">と</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD</span><span style="color:#333333">、ふたつの対応関係を見てきました。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">共分散行列の固有値と特異値にはシンプルな対応がある</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">主成分は、符号を除いて同じ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p class="MsoNormal" align="left" style="margin-left:0mm;text-align:left;text-indent:-18.0pt;mso-list:l2 level1 lfo2;background:white"> <![if !supportLists]><span lang="EN-US" style="font-size:10.0pt;font-family:Symbol;color:#333333"><span style="mso-list:Ignore">·<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="color:#333333">次元削減の結果で得られるデータも、符号を除いて同じ</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">では、このふたつのうちどちらを使うのが望ましいでしょうか?</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">個人的に、イメージがつかみやすいのは</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> PCA </span><span style="color:#333333">です。なので、何か理論的なことを考えるときには</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">PCA </span><span style="color:#333333">を使うと見通しがいい場合が多いと思います。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="mso-margin-top-alt:18.0pt;margin-right:0mm;margin-bottom:0mm;margin-left:0mm;margin-bottom:.0001pt;background:white;box-sizing: inherit;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px"> <span style="color:#333333">ただし、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><a href="http://math.stackexchange.com/questions/3869/what-is-the-intuitive-relationship-between-svd-and-pca" target="_blank"><span style="color:#6200AC">Mathematics Stack Exchange</span></a> </span><span style="color:#333333">の</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">J. M.</span><span style="color:#333333">氏の回答によると、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333">SVD </span><span style="color:#333333">のほうが数値的に安定しているようです。実際、そこで挙げられている</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> Läuchli matrix </span><span style="color:#333333">に対しては、</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"> SVD </span><span style="color:#333333">のほうが良い結果を出しているようです。</span><span lang="EN-US" style="font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <div> <p class="MsoNormal" style="mso-margin-top-alt:36.0pt;margin-right:0mm;margin-bottom:36.0pt;margin-left:0mm;background:white"> <span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn6s3o-A3eWEMFZh62XhvOfN9s47vi-RkfwadSRq70lrdW5rwdnguxX6Wu81BgorSnYEEQ9RyusD661400QnpAzqhvoyICX-P-NjiLpjTnnw_TI_CIf0bxJOCBF10TTi-ZwmzRMYL1s_Vq/s1600/D911051FC9854AC8A20BD6DDE1914248-742696.png"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjn6s3o-A3eWEMFZh62XhvOfN9s47vi-RkfwadSRq70lrdW5rwdnguxX6Wu81BgorSnYEEQ9RyusD661400QnpAzqhvoyICX-P-NjiLpjTnnw_TI_CIf0bxJOCBF10TTi-ZwmzRMYL1s_Vq/s320/D911051FC9854AC8A20BD6DDE1914248-742696.png" border="0" alt="" id="BLOGGER_PHOTO_ID_6621855795525536098" /></a></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><o:p></o:p></span></p> <p style="margin:0mm;margin-bottom:.0001pt;text-indent:-18.0pt;mso-list:l1 level1 lfo3;background:white;box-sizing: inherit"> <![if !supportLists]><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span class="mi"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">V</span></span><span class="mi"><span lang="EN-US" style="font-size:9.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">svd</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">Vsvd</span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="font-size:11.0pt;color:#333333">は規格化された直交ベクトルの並びなので、勝手に係数をかけることができません。なので、</span><span class="mn"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">/(</span></span><span class="mi"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">n</span></span><span class="mo"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">−</span></span><span class="mn"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1</span></span><span class="mo"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Main",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">)</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">1/(n−1)</span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="font-size:11.0pt;color:#333333">の部分は必ず</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"> </span><span class="mi"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mi"><span lang="EN-US" style="font-size:9.0pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">T</span></span><span class="mi"><span lang="EN-US" style="font-size:12.5pt;font-family:"MathJax_Math-italic",serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">S</span></span><span class="mjxassistivemathml"><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333;border:none windowtext 1.0pt;padding:0mm">STS</span></span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"> </span><span style="font-size:11.0pt;color:#333333">の部分にかかっているだろうと判断できるわけです。</span><span lang="EN-US" style="font-size:11.0pt;font-family:"Segoe UI",sans-serif;color:#333333"> <a href="https://qiita.com/horiem/items/71380db4b659fb9307b4#fnref1"><span style="font-family:"Segoe UI Emoji",sans-serif;color:#6200AC">↩</span></a><o:p></o:p></span></p> </div> </div> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p> <p class="MsoNormal"><span lang="EN-US"><a href="https://qiita.com/horiem/items/71380db4b659fb9307b4">https://qiita.com/horiem/items/71380db4b659fb9307b4</a></span></p> </div> hanhttp://www.blogger.com/profile/01397638669552344304noreply@blogger.com0